MINI APPLI VIDE !

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 12 nov. 2012 à 09:42
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 - 3 déc. 2012 à 14:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/54736-mini-appli-vide

sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
3 déc. 2012 à 14:12
Et pourquoi la version 10 d'ailleurs ? (Si je calcule bien, la dernière version sortie est la 17...)
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
3 déc. 2012 à 12:37
@lamukembe
D7 reste pour le moment la version la plus commune, tous utilisateurs confondus. C'est donc celle qui assure le minimum de problèmes de compilation quand on poste.
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
3 déc. 2012 à 12:08
pour mon compte personnel, je ne vois pas acheter une nouvelle version alors que mon D7 me convient pour ce que je fait
C'est vrai que ça doit être mieux !
maintenant, plus les soft évoluent plus cela devient des usines à gaz dont on utilise qu'un ou deux bureaux : c'est pas rentable !
lamukembe Messages postés 3 Date d'inscription mardi 21 décembre 2010 Statut Membre Dernière intervention 3 décembre 2012
3 déc. 2012 à 10:23
je suis tres ravi des commentaires des posteur ,une chose pourquoi laplupart des posteurs devellopent avec delphi 7 ,pourquoi iniorent t-il la version 10?
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
14 nov. 2012 à 14:59
@simonpelloquin

TFrame, c'est le seul compo de la palette dont le nom a été traduit en français !

C'est parce que le mec a commencé à traduire un vendredi à 17:55, il est parti en weekend, et le lundi matin, comme il avait pris une cuite la veille, il est passé à autre chose...

C'est d'ailleurs aussi pour ça qu'il est si peu utilisé.
Tout le monde cherche TFrame sur la palette... et « -Tiens! C'est pas dans mon Delphi à moi... ».

Bon! J'ai d'autres précisions sur le TFrame, mais je les garde pour le tuto.
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
14 nov. 2012 à 09:07
Bizarre, on dirait que le composant TFrame a été dégagé de XE2...
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
13 nov. 2012 à 23:18
Haaa ça, c'est toujours frustrant de poster un truc qu'on pense qu'il vas trop être super utile et .... ben non.

Mais le succès viens avec le temps, quand je regarde le compteur de telechargement de mes codes ici, au bout de 6 ans c'est plutôt pas mal ;)

Si tu voyais ce qu'on peu faire avec D2009 !!! les classes Helpers, les generics, les surcharges d'opérateur etc ... tu serai un tout nouveau jeune homme :)
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
13 nov. 2012 à 19:22
Un tuto? o_O
C'est un sacré boulot, les gars ! Ceux qui en ont déjà écrit me comprendront. :D
Et ce serait un peu comme faire un tuto sur TForm...

TFrame n'est jamais qu'un composant de base de Delphi, et il est bien documenté dans l'Aide. C'est d'ailleurs le 1er Compo de la palette !
C'est un simple "conteneur" de composants avec leurs codes. En fait, il ressemble beaucoup à Tform, et il vaut surtout par le code qu'il contient.
Pour l'appréhender le mieux est de l'utiliser.

J'essaierai de l'utiliser davantage lors de mes prochaines contributions et j'invite tout le monde à le faire. En effet, s'il est bien implémenté, il est directement réutilisable à l'instar d'une unité.
En tout cas, si on le rencontre si peu ce n'est certainement pas parce qu'il est difficile à implémenter.

Des exemples d'utilisation :

http://bloon.developpez.com/articles/delphi/assistant/

http://delphi.developpez.com/faq/?page=pagecontrol#newttabsheet

http://delphi.developpez.com/faq/?page=application#interfaceoutlook

Et TRES utile! Comment programmer le OnCreate et OnDestroy d'un TFrame :

http://delphi.developpez.com/faq/?page=tframe#createdestroysurframe
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
13 nov. 2012 à 17:06
comme Simon!
je suis allé sur les codes dans delphifr, ça ne cours pas les rues!
j'en ai quand même un peu trouvé sur goo....
mais si Cari connais quelque chose de bien, je suis sur que l'on est tous preneur
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
13 nov. 2012 à 16:36
Cari, je suis un peu comme M. DUBOIS, je n'ai jamais eu recours aux frames. Un petit tuto ? (parce que comme tu le présente, ça a l'air appétissant...)
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
13 nov. 2012 à 15:43
Tu prêche un converti Cari !
Je vais m'y mettre sans tarder : j'ai pour habitude (honteuse) de faire faire le plus de boulot possible par la machine, donc l'utilisation de cette technique devrait parfaitement me convenir (lorsque j'aurais fait quelques essais !)
merci en tout cas pour le (bon) tuyau
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
13 nov. 2012 à 15:31
Dubois77 a dit :
« Crois tu que pour commencer une appli quelconque beaucoup de delphistes commencent par un cadre ? »
- Non, sauf rares exeptions , ils commencent par une Form vide. Mais les Cadres apporteraient plus de souplesse :

- imagine qu'ils développent une application graphique. Alors ils déposeront sur la Form vide leur "Cadre_Graph" qui contient une PaintBox et le code de quelques routines usuelles comme le précalcul des tableaux trigonomètriques, les redimensionnements, les chargement/sauvegarde de fichier graphique, etc...

- imagine qu'ils développent une application ayant besoin d'un menu "détachable". Alors ils déposeront sur la Form vide leur "Cadre_Docking" qui contient le Panel d'ancrage et tout le code y afférent...

- imagine que leur application nécessite une loupe. Alors ils déposeront leur "Cadre_Zoom" contenant un TImage et le code du zooming.

- Pour le calcul du "nombre de bocaux de la belle mère", ils pourront utiliser des cadres contenant un TImage représentant une variété de confiture qu'ils afficheront en divers endroits de leur application, diminuant ainsi la taille de l'exe.

- etc...

Déjà, ça a l'avantage de bien séparer le code-métier du code-IHM (préconisation de la POO).
Ensuite, si un jour ils ont du temps libre et de l'inspiration, ils optimiseront un de leur "Cadres" et les améliorations seront automatiquement répercutées sur tous les "Cadres" dérivés.

[oups] Bon je sais, ça fait fort « Fais comme j'te dis! Fais pas comme je fais! »... :)))


@F0xi
Quand je parle de TFrame à un "pro", il répond souvent: -«Je n'utilise jamais TFrame. J'utilse TForm à la place.»
Une question de train-train, sans doute...
cs_agrillon Messages postés 4 Date d'inscription mardi 5 juillet 2005 Statut Membre Dernière intervention 15 juillet 2008
13 nov. 2012 à 12:46
Bonjour Dubois77, si si !! Pas de Chat-grain, les débutants le dit-sec ;)
Et si l'on ne commente pas c'est que l'on ne peut ce le permettre !
Au mieux poser des questions...

Merci pour ton travail, et aux commentaires instruits des niveaux ++

LAURENT
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
13 nov. 2012 à 11:52
"Ce qui me chagrine le plus, c'est que des "novices" ne s'y intéressent pas plus."
Ils sont occupés à poser des questions sur le forum!
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
13 nov. 2012 à 11:38
Un peu de réclame :
http://sports.roissy.free.fr/delphi
renvoie sur la page de mes (mini)applications
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
13 nov. 2012 à 11:25
Merci !
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
13 nov. 2012 à 11:20
désolé, il fallait une majuscule à Systus :
http://sports.roissy.free.fr/delphi/Systus.pas

(le web est très restrictif)
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
13 nov. 2012 à 11:17
heu "auxquelles" pardon...
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
13 nov. 2012 à 11:12
je confirme l'erreur 404 sur le lien.
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
13 nov. 2012 à 09:14
Au risque d'être pénible, j'ai un 404 document not found sur le lien que vous indiquez... :)
J'aimerai bien y jeter un oeil, parce qu'il y a parfois dans ces petites unités des fonctions toutes simples auquelles on ne pense pas forcément
mais qui peuvent nous faciliter la vie au quotidien...
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
13 nov. 2012 à 08:21
Caribensila :
"Mais, dans le même esprit, je pense que l'utilisation des TFrames est beaucoup plus souple :"

oui tu as surement raison. Je n'ai encore jamais utilisé de cadres ; j'ai été voir la doc Delphi : c'est effectivement pas mal, possibilités de faire des simili composants; bref bien MAIS :

Crois tu que pour commencer une appli quelconque (calcul du nombre de bocaux de la belle mère !) beaucoup de delphistes commencent par un cadre ?
Je pense que la bonne vieille Form à toujours de beaux jours devant elle

Mais cette remarque m'a fait miroiter quelques possibilités !!
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
13 nov. 2012 à 08:05
pardon : et puis je m'y suis habitué et c'est resté !
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
13 nov. 2012 à 08:04
Foxy :
"Mais je ne vois pas l'utilité de faire : add(ListBox1, 'texte'); plutôt que ListBox1.Items.Add('Texte');"
Je suis bien d'accord avec toi, ceci vient d'il y a quelques années déjà, quand je débutais en Delphi, car pour les memo il fallait utiliser des Lines alors que c'était des Items pour les ListBox et autres Combobox, bref je me suis fait une unité qui m'évitait de penser à ce problème d'ou les :

ADD(L1,'xx') pour un listBox au lieu de L1.Items.Add('xxxx');
ADD(M1,'xx') pour un Memo au lieu de M1.Lines.Add('xxxx');

et puis je m'y suis habituer et c'est resté !
(je sais, c'est pas bien, mais c'est pas à mon age que je vais changer !!)
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
13 nov. 2012 à 07:54
Salut Franky, rassure toi ! pas de claque !
Foxy, je suis même très content (voir flatté que le gratin (sans vouloir offenser) s'intéresse à cette mini application !
Ce qui me chagrine le plus, c'est que des "novices" ne s'y intéressent pas plus.

SimonPelloquin, j'ai supprimé l'unité systus.pas du zip car en fait elle ne sert pas directement dans la création du modèle qui fonctionne directement sans cette unité (et surtout à provoqué les commentaires : je la modifierais surement un jour pour la poster avec le mode d'emploi !).
Je l'avais mise car chez moi elle y est tout le temps puisque je programme toujours avec et qu'il y avait juste 2 appels de fonction dans ce module de base (dirparam notamment) que j'ai réécrit en clair dans la mise à jour (l'utilisation de systus m'évitais justement de faire ceci (voir "de deux" de Foxy).
Avec ce modèle chacun peut programmer directement avec son Delphi préféré (le mien c'est le 7)
Si tu veux tu peux toutefois la télécharger ici :
http://sports.roissy.free.fr/delphi/systus.pas
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
13 nov. 2012 à 01:21
mais non mais non, j'espère oui qu'on l'a pas vexer :(

En même temps, qui aime bien, commente et critique beaucoup. na ! :)
Utilisateur anonyme
12 nov. 2012 à 20:38
Vous zetes durs avec Dubois : vous étiez pas obligé de lui tailler la raie :D (j'vais me prendre une claque sur ce coup là).
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
12 nov. 2012 à 19:22
@cari : PARCE QUE C'EST DE LA ME*** CA MADAME ! heuuuu non ... oui ... pourquoi on ne les utilises pas plus ... peut être parce que :
soit on les zapes.
soit on en as pas le besoin.

pourtant TFrame et TDataModule sont plutôt utiles pour gagner du temps et clarifier les fiches.
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
12 nov. 2012 à 19:15
incendier ... non, corriger ? plus que certainement.

il n'est jamais trop tard ni pour bien faire, ni pour apprendre.

pourquoi ? car ça permet de un, de s'améliorer, de deux, de coder plus vite, de trois, d'aller plus loin, de quatre, de faire des programmes plus aboutis, fiables, robuste, clair, et de cinq, parce que c'est ça qui est bon ! :)

En effet il manque Systus.pas dans le zip.
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
12 nov. 2012 à 17:09
Bonjour,

Il n'y a pas Systus.pas dans le zip... Pouvez-vous corriger ?

Merci d'avance
Simon
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
12 nov. 2012 à 15:34
Bonjour,

Je suis aussi du même avis: des bonnes idées...

Mais, dans le même esprit, je pense que l'utilisation des TFrames est beaucoup plus souple :

- On peut les enregistrer sur la Palette Des Composants pour réutilisation.
- Lorsque tu leur apportes des améliorations, les Frames présents dans tes différents projets héritent des modifications apportées au cadre dont ils dérivent car les modifications apportées à un cadre d'origine sont automatiquement répercutées sur ses descendants.
- En revanche, tu peux modifier n'importe quel cadre incorporé sans affecter le cadre d'origine.
- Tu peux aussi les utiliser pour y stocker des ressources redondantes pour allèger l'.exe et simplifier sa maintenance.
- Tu peux les partager très facilement, comme sur ce site, en distribuant l'unité du cadre (.pas) et les fichiers fiche (.dfm ou .xfm).
- Et plein d'autres avantages à voir dans l'Aide Delphi.

D'ailleurs, à revoir tous ces avantages, je me demande pourquoi nous ne les utilisons pas plus souvent... :)
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
12 nov. 2012 à 12:02
Du même avis que Cantador, il aurait été plus intéressant de voir comment ajouter une fiche personnalisée au menu des projets Delphi, la oui, ça aurait été pas mal.

Ensuite, je n'aime pas trop l'unité Systus.pas, pourquoi :

- les couleurs en français, c'est une bonne idée, MAIS, le nom ne respecte pas les conventions, en effet les couleurs devrait commencer par "cl" ou "ecl" (extended color), bref par un préfixe distinguant : eclRouge, eclBleue, eclBlanc, eclArgent.

- idem pour les propriétés de styles des polices qui devrait commencer par "fss" (font styleS) : fssGras, fssItalique, fssNormal, fssGrasItalique

- constante RC mal nommée : const CR=#13; {carriage return} LF=#10; {Line Feed} CRLF = CR+LF;

- on aurait pus completer les fichiers de debug et log : devrait être des variables AppDebugFile et AppLogFile et AppReportFile

- TXY inutile ... voir TPoint ! faire un alias : type TXY = TPoint;

- Coma inutile ... voir ListSeparator ! faire un alias : const DotComa = ListSeparator;
Coma = virgule

- il manque des explications sur les objet TABLO (devrait être TTableau) et TMultiImage

- Pas sur de l'utilité des fonctions pour les ListBox, du moins leur ecriture n'est pas claire et ne respecte pas les conventions devrait pointer le TStrings commun aux objet TComboBox, TRadioGroup, TListBox, TMemo, TRichEdit etc.
on peux tricher en detectant la classe :
function Add(Object: TObject; Str: string): integer;
begin
if Object is TComboBox then result := TComboBox(Object).Items.add(Str) else
if Object is TListBox then result := TListBox(Object).Items.add(Str) else
if Object is TMemo then result := TMemo(Object).Lines.add(Str);
end;

Mais je ne vois pas l'utilité de faire : add(ListBox1, 'texte'); plutôt que ListBox1.Items.Add('Texte');
sincèrement ç'est même moins bien. surtout le truc : RAZ(Edit1) ---> Edit1.Clear;

Idéalement, par contre ce qui serait sympa c'est : Clear([Edit1, Edit2, Edit3, Edit4]); <-- la oui, ça permet d'être plus rapide

Attention aux assignations de TStrings !

Objet.Strings := Strings <--- FAUX !
Objet.Strings.Assign(Strings) <--- BON ! (T.Items.Assigns(O) / T.Lines.Assign(O))

bref, y'a pas mal de bonne petites idées, mais mal mises en pratiques, par exemple, pour le debug/log voici un exemple bien plus "cool" et simple à utiliser, sans prendre la tête au dev :

unit DebugLog;

interface

uses Windows, SysUtils, Classes, StrUtils;

type
TAppDebugLog = class
private
fFile : String;
fStrings: TStringList;
fActive : boolean;
procedure setStrings(const Value: TStrings);
protected
procedure Update;
public
property Active: boolean read fActive write fActive;
property Log : TStrings read fStrings write setStrings;
procedure Clear;
function Add(aStr: string): integer;
constructor Create;
destructor Destroy; override;
end;

var
AppDebugLog : TAppDebugLog;

implementation

{ TAppDebugLog }

function TAppDebugLog.Add(aStr: string): integer;
begin
fStrings.Add('## '+DateTimeToStr(now)+' :');
fStrings.Add(' '+ReplaceStr(aStr,#13#10,#13#10#32#32));
Update;
end;

procedure TAppDebugLog.Clear;
begin
fStrings.Clear;
Update;
end;

constructor TAppDebugLog.Create;
begin
fStrings := TstringList.Create;
fFile := ExtractFilePath(paramStr(0))+'debug.log';
fActive := false;
if fileExists(fFile) then
fStrings.LoadFromFile(fFile);
end;

destructor TAppDebugLog.Destroy;
begin
Update;
fStrings.Free;
inherited;
end;

procedure TAppDebugLog.setStrings(const Value: TStrings);
begin
fStrings.Assign(Value);
end;

procedure TAppDebugLog.Update;
begin
if fActive then
fStrings.SaveToFile(fFile);
end;

initialization
AppDebugLog := TAppDebugLog.Create;

finalization
AppDebugLog.Free;

end.
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
12 nov. 2012 à 09:42
Les uses ButtonComps, ButtonWithColor n'ont pas de librairies
Il suffit de les supprimer pour que le programme démarre.
Même si l'intention est louable, je ne suis pas sûr que ce soft puisse servir de trame
de fond pour les projets des débutants..
Des composants ne sont pas renommés et le code est mal indenté.
et puis ce source répondrait à tous les besoins ?

Reste le petit preview sympathique qui à lui seul aurait pu faire l'objet de ce
dépôt permettant de remplacer le mot "vide" pas très attractif.
Rejoignez-nous