Il faut dessiner avec StretchDraw (déjà proposé dans les codes précédents) qui va étirer l'image selon les dimensions souhaitées à la place de Draw qui copie l'image avec la taille originale, il faut donc calculer la nouvelle zone à dessiner en respectant les proportions de l'image source.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Je rencontre un léger problème pour aligner les images le long des bordures, comme s'il s'agissait d'un étirement.
remplacer cette ligne:
par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part DBCtrlGrid.Canvas.Draw(0,0, Pic.Graphic);
la fonction pour calculer la zone à dessiner
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 LRect := RectBestFit(Pic.Graphic, LRect); DBCtrlGrid.Canvas.StretchDraw(LRect, Pic.Graphic);
La question sérieuse c'est qu'on peut pas parler de solution pratique avant la création un mécanisme de gestion de cache pour les images ayant été chargés car le faire a chaque opération de dessin est tres tres couteux .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 function RectBestFit(Src: TGraphic; const ADestRect:TRect): TRect; var DstWidth, DstHeight: integer; NewWidth, NewHeight: integer; Scale: Single; begin DstWidth := ADestRect.Right - ADestRect.Left; DstHeight := ADestRect.Bottom - ADestRect.Top; Scale := min(DstWidth / Src.Width, DstHeight / Src.Height); if Scale < 1 then begin NewWidth := Trunc(Src.Width * Scale); NewHeight:= Trunc(Src.Height * Scale); end else begin NewWidth := Src.Width; NewHeight := Src.Height; end; Result := Bounds((DstWidth - NewWidth ) div 2, (DstHeight - NewHeight ) div 2 , NewWidth, NewHeight); Windows.OffsetRect(Result, ADestRect.Left, ADestRect.Top); end;
Il semble que l'image est très large et seule la partie supérieure gauche est dessinée (zone blanche) le reste n'est pas couvert par le cadre actuel du panelJ'ai rencontré un autre problème : après avoir changé l'image d'un produit, lorsque je retourne à la fiche de vente, je ne trouve pas l'image mise à jour.
Bonjour,
Je suis effaré par toute cette débauche de code alors que ma proposition de début était correcte !
Utilisation d'un TImage avec les options Stretch et Proportional
Intrigué par ce qui a été écrit par LandGreen Post #9
Comme dans la série Dr House, on ne devrait jamais faire confiance au patient.ce code maffiche l amême image partout
J'ai donc exhumé une vieille machine avec une version de D7 et je confirme mes soupçons
Cela étant, le temps de chargement (j'ai été obligé de réduire le nombre de photos de mon album ) est excessif et j'ai un doute sur le quand activer la source de données, mais là n'était pas le sujet.
Je reste persuadé qu'utiliser des vignettes, au sein d'un mémo de la base de données est plus efficace (mais ça on l'a écrit très vite que ce soit ShaiLetroll ou moi)
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Moi je reste effaré, que la société en question de LandGreen, je ne citerai pas son nom mais on l’aperçoit sur des captures d'écran, continue de vendre des logiciels en Delphi 7 en 2024, avec une base de données dont je soupçonne qu'il s'agit d'une version d'Access ante-diluvienne (sans doute pour ça qu'il est impossible d'y ajouter des vignettes au passage). Ça pose la question de la dette technique de tels développement si d'autres développeurs devaient reprendre derrière...
@Landgreen : Il sans doute serait temps de migrer sur une version de Delphi moderne (ça coute un peu mais l'investissement serait sans doute justifié) et une version de base de données autre qu'Access
Bonjour,
Je vous remercie pour vos critiques positives, mais nous ne sommes pas une société, mais plutôt des travailleurs indépendants dont le bureau est basé en Algérie. Permettez-moi de vous confirmer que notre logiciel est plus fiable que d'autres développés avec des technologies modernes utilisant SQL Server comme SGBD et Java ou C# comme IDE. Je vous assure qu'il m'est arrivé à plusieurs reprises d'avoir des clients qui ont changé leur logiciel développé soi-disant avec des technologies très modernes, mais malheureusement ils ne sont pas efficaces (ils plantent et font des erreurs de calcul, etc.). Je connais de grandes entreprises partout qui utilisent toujours MS-DOS en raison de sa fiabilité. Vous pouvez le constater chez Leroy-Marlin où il y a des postes qui utilisent toujours MS-DOS.
Cordialement,
Je doute pas de fiabilité mais du temps passé/perdu pour arriver à tordre le bras à Delphi / Access et trouver des astuces pour parvenir à vos fins.
Oui j'ai aussi des clients qui utilisent aussi des systèmes DOS et dans certains cas, il n'est pas possible de faire autrement, par exemple l'éditeur du logiciel à disparu depuis longtemps et l'investissement dans un nouveau logiciel serait très couteux, très risqué, ce sont souvent des machines très spécialisées, mais j'essaye souvent lorsque je le peux de les faire évoluer...
Vous êtes conscient que votre logiciel fonctionne encore en 32 bits et que l'on ne trouve plus que des machines 64 bits aujourd'hui, un jour Microsoft mettra peut être fin au support 32 bits, que ferez-vous ce jour là ?
Certes il sera sans doute possible longtemps d'utiliser des machines virtuelles, mais ça va complexifier le tout...
Aujourd'hui certaines distribution Linux (pas toutes) commencent à abandonner le support du 32 bits, l'histoire est en marche
Pour des petites application MSSQL n'est pas toujours le plus efficace, mais s'il est employé correctement, ça fonctionne !
Les erreurs de calcul c'est surtout des erreurs de codage dans la comptabilité !!!
Tous les langages modernes ont des types numériques monétaires qui permettent de faire des calculs sans laisser de décimales en route et d'avoir des arrondis rigoureux, c'est donc souvent un problème de programmation
Si vous ne souhaitez pas acquérir de licence Delphi (ou que vos moyens sont limités) plusieurs solutions s'offrent à vous :
- Il existe une licence Community Edition qui permet de développer mais avec des restrictions sur le chiffre d'affaire maximum, il faudrait vous renseigner pour savoir ce qu'il en est en Algérie, en France de mémoire c'est 5000€/an maxi qu'il ne faut pas dépasser
- Vous pouvez aussi basculer vers le couple Lazarus / FreePascal voir ici : https://www.lazarus-ide.org/, c'est open-source et gratuit, l'IDE est inspiré de Delphi 7 et le langage quasi 100% compatible, j'ai souvent compilé des sources Delphi avec FreePascal sans soucis particulier et vous feriez un bond dans le temps...
- Concernant les bases de données, entre MariaDB, Firebird, SQLite, vous avez le choix de systèmes modernes et efficaces, les trois sont open-sources et gratuites et extrêmement fiables et vous ouvrent de nouveaux horizons, par exemple stocker vos images directement dans la base de données, etc...
Avec Lazarus, vous pourriez commencer à migrer doucement, vers un système plus moderne que Delphi 7, même si Delphi 7 a beaucoup de possibilités, il lui manque le support de l'unicode, la généricité, la compilation 64bits, etc...
Voici quelques pistes vers lesquelles vous pouvez commencer à réfléchir
Notez que plus vous attendrez et resterez sous Delphi 7 / Access plus la dette technique va s'alourdir au fil des années,
En tant que développeurs indépendants vous devez aussi penser à l'avenir, à ce que sera votre produit dans quelques années afin qu'il ne soit pas dépassé par d'autres produits concurrents, vous dites qu'il est apprécié, alors ce serait dommage de le mettre en péril faute de pouvoir le faire évoluer dans quelques années
Le logiciel fonctionne parfaitement en 64 et 32 bits, sans aucun problème. Certains magasins l'utilisent depuis 2018 sans aucun incident.
De plus, il est extrêmement léger et portable, ne nécessitant aucun framework ou composant supplémentaire à installer (contrairement à certains logiciels qui nécessitent .Net, par exemple) et n'exige pas de ressources améliorées ; il fonctionne avec seulement 1 Go de RAM et un disque dur de 128 Go ! Sa taille ne dépasse pas 50 Mo.
Enfin, je tiens à préciser qu'il est destiné aux petits commerces tels que les boutiques, les tabacs, les parfumeries et les épiceries.
On ne change pas une équipe qui gagne, n'est-ce pas ? 😄
C'est intéressant, mais est-ce qu'il prend en charge QuickReport 5.0 ? Je demande cela car je souhaite migrer, et j'utilise des composants tels que Raize, FastReport 6.0 et QuickReport.- Vous pouvez aussi basculer vers le couple Lazarus / FreePascal
QuickReport & Raize je ne pense pas mais c'est facilement remplaçable...
Sinon FastReport semble supporté voir ici : https://forum.lazarus.freepascal.org...?topic=45111.0
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager