j'ai regardé les liens mais je n'ai rien trouvéCitation:
Envoyé par say
concérnant les balises ,je ne les trouves pas ces balises
Version imprimable
j'ai regardé les liens mais je n'ai rien trouvéCitation:
Envoyé par say
concérnant les balises ,je ne les trouves pas ces balises
tssss...la balise, quand tu rédiges le message : #
un exemple de code qui devrait rouler à peu près :
Edited : copier-coller raté..il y avait une boucle en tropCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 MyFonctionCaptionsGlyphes(TWinControl * Sender) { for(i=0;i<Sender->ControlCount ;i++) { if((AnsiString)Sender->Controls[i]->ClassName() == "TSpeedButton") (dynamic_cast<TSpeedButton*>(Sender->Controls[i]))->Glyph->LoadFromFile("chemin"); else if((AnsiString)Sender->Controls[i]->ClassName() == "TLabel") (dynamic_cast<TLabel *>(Sender->Controls[i]))->Caption="blabla"; else if((AnsiString)Sender->Controls[i]->ClassName() == "TPanel") MyFonctionCaptionsGlyphes(Sender->Controls[i]); } }
Salut !
En premier lieu, j'ai utilisé quelques symboliques :
Ensuite j'ai déclaré deux méthodes membres pour TForm1 :Code:enum{id_none, id_label, id_panel, id_speedbutton};
Je préfère tester si l'objet hérite d'une classe précise pour avoir une vision plus large.Code:
1
2
3 public: // Déclarations de l'utilisateur void __fastcall Targets(TWinControl *WinControl); int __fastcall GetControlId(TControl *Control);
Ce se serait dommage d'ignorer des objets dérivées de la dite classe... ;)
La méthode suivante est récursive.Code:
1
2
3
4
5
6
7
8 int __fastcall TForm1::GetControlId(TControl *Control) { if(Control->InheritsFrom(__classid(TLabel))) return id_label; if(Control->InheritsFrom(__classid(TPanel))) return id_panel; if(Control->InheritsFrom(__classid(TSpeedButton))) return id_speedbutton; //... return id_none; }
On peut utiliser un switch sur la valeur renvoyée par la méthode GetControlId; on a ainsi une meilleure lisibilité de ce que l'on fait, en lieu et place d'un arbre logique avec ses if et ses else...
Pour le test, j'ai fait :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 void __fastcall TForm1::Targets(TWinControl *WinControl) { TControl *Control; for(int j = 0; j < WinControl->ControlCount; j++) { Control = WinControl->Controls[j]; //traite d'abord les objets dont le Control est parent if(Control->InheritsFrom(__classid(TWinControl))) { Targets((TWinControl*)Control); } //puis traite le Control switch(GetControlId(Control)) { case id_label : ((TLabel*)Control)->Caption = "Found"; break; case id_panel : ((TPanel*)Control)->Caption = "Found"; break; case id_speedbutton : ((TSpeedButton*)Control)->Caption = "Found"; break; //... } } }
Ce n'est qu'un exemple !Code:
1
2
3
4 void __fastcall TForm1::BitBtn1Click(TObject *Sender) { Targets(this); // donc ici la racine n'est autre que Form1 }
A plus !
Pour rentrer les balises de code:Citation:
Envoyé par aadelfa
Lorsque tu rédiges un message, tu dois avoir un bouton "#" juste au dessus de la zone de saisie, le dernier bouton à droite.
Tu dois avoir une barre d'outils avec G I S (123) (...) etc... et le dernier outil est le "#".
Appuie dessus, cela va insérer une balise de début et une balise de fin dans ton message. Tu as juste à entrer ton code entre ces 2 balises. C'est tout.
Franck
chapeau bas...je m'incline..:lahola: :ave:
j'avais pas pensé au coup des inherits.. :mouarf:
et ben le switch, suis d'accord ..je le fais d'hab mais là c t vite fait (ce qui n'excuse rien, je te l'accorde :aie:
Citation:
Envoyé par henderson
salut
j'ai creé une application ou j'ai mise 2 panels et des controles,mais quand je l'éxécute j'ai une erreur.
expected a file name
merci pour votre aide
allo...y'a quelqu'un????
suis désolé...mais :
- sers à rien de citer tout et n'importe quoi..
- tu ne dis jamais si tu as essayé les solutions qu'on te propose
- tu ne sembles pas du tout chercher par toi même..
fais un effort stp :sm:
Citation:
Envoyé par say
tes solutions non
les autres si
merci quand même
a dieu
alors..je te signale que c'est surtout que je t'ai pas livré une solution clé main...
suis vraiment navré...merci à henderson donc.
mais reconnais que c'etait difficile de savoir où tu en étais.
bonne continuation
P.S : pense au tag :resolu: si ce n'est déjà fait merci
Salut !
expected a file name ??? :mouarf:
Y' a des jours comme ça .... où rien ne va !!!
Il suffit d'appliquer sur les 2 panels, comme je l'ai montré pour la form.
En effet, un TPanel dérive de TWinControl donc...
A plus !Code:
1
2 Targets(Panel1); Targets(Panel2);
Citation:
Envoyé par henderson
je vais essayer ça
merci
salutCitation:
Envoyé par henderson
j'ai essayé et ça marche,mais quand j'insére des images.bmp,mon programme prend du temps pour appliquer ces images.
Code:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 TControl *Control; const char *strSection; AnsiString A; TIniFile *f; AnsiString section; strSection="english"; try { TStringList *lSections = new TStringList(); f = new TIniFile("monfichier.ini"); f->ReadSection(strSection, lSections); for(int j = 0; j < WinControl->ControlCount; j++) { for(int i=0 ; i < lSections->Count ; ++i) { section = lSections->Strings[i]; AnsiString Valeur = f->ReadString(strSection,section,"");//paramètres = Section/Clé/Valeur par défaut Control = WinControl->Controls[j]; //traite d'abord les objets dont le Control est parent if(Control->InheritsFrom(__classid(TWinControl))) { Targets((TWinControl*)Control); } //puis traite le Control switch(GetControlId(Control)) { case id_label : if (((TLabel*)Control)->Name == section) { ((TLabel *)Control)->Caption=Valeur;} break; // case id_panel : if (((TLabel*)Control)->Name == section) // { // ((TPanel*)Control)->Caption = "Found"; break; case id_speedbutton : if (((TSpeedButton*)Control)->Name == section) { ((TSpeedButton*)Control)->Glyph->LoadFromFile(Valeur);} break; //... } } } delete lSections; } __finally { delete f; } }
merci pour tout
salut et merci beaucoup anderson ainsi que tousCitation:
Envoyé par henderson
désolé d'avoir oublié de mettre :resolu:
c un peu lent mais ça marche
:merci: :merci: :merci:Code:
1
2
3
4 void __fastcall TForm1::BitBtn1Click(TObject *Sender) { Targets(Form1); }