Créer par programme un TEdit...
Bonjour,
je suis débutante en Delphi et je galère !
En fait, j'ai une liste, et je dois la décomposer pour mettre chaque élément de la liste dans une ligne d'une ScrollBox. Puis chaque élément doit être décomposé dans un TEdit, puis un Combobox puis la dernière partie dans un TEdit, tout celà devant être contenu dans la ScrollBox.
Je sais pas si c'est très clair ! :roll:
Le problème en fait est que je ne sais pas comment créer par programme un Edit ou un ComboBox ou un Scrollbox.
Si quelqu'un peut m'aider, je vous remercie d'avance !
Camille
:P
Toujours à propos de ma combobox !
Citation:
Envoyé par sjrd
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
| procedure RemplirScrollBox(ScrollBox : TScrollBox; Liste : array of TElement);
var I : integer;
begin
// D'abord il faut supprimer tous les contrôles qui existaient auparavent dans la scrollbox
while ScrollBox.ControlCount > 0 do
ScrollBox.Controls[0].Free;
// Ensuite on boucle sur la liste
for I := Low(Liste) to High(Liste) do
begin
// On crée la combo box
with TComboBox.Create(ScrollBox) do
begin
Parent := ScrollBox;
Left := 16;
Top := 18 + 24*I;
Width := 16;
Height := 16;
Checked := Liste[i].ValeurBooleenne;
Visible := True;
end;
// On crée l'edit
with TEdit.Create(ScrollBox) do
begin
Parent := ScrollBox;
Left := 40;
Top := 16 + 24*I;
Width := ScrollBox.Width-56; // la largeur restante
Text := Liste[i].ValeurChaine;
Visible := True;
end;
end;
end; |
Re-salut !
merci pour ton message, ça marche nickel !
Je voudrais maintenant ajouter une propriété dans la combobox pour que si l'utilisateur clique sur un choix particulier de la combo (par exemple, j'ai une liste du style : =, <>, := ... et qu'il choisit 'parmi' ) ça affiche une nouvelle boite TEdit. (ça je sais faire maintenant ;) )
Est-ce que je peux rajouter dans le code au-dessus un truc du genre : OnChange do (if (Text = 'parmi') then edit2 := ' '); ?
Bon en fait, je sais que je peux pas puisque ça marche pas, mais est-ce que j'y suis presque ou est-ce que c'est pas du tout comme ça qu'il faut faire ???
Voilà, encore un de mes nombreux soucis !
Merci beaucoup de vos réponses et de votre patience avec moi !!!!
Camille
8-)8-)8-)
Toujours moi... mais j'avance !!
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
procedure TFicheGenerationExercices.ComboBoxCDChange(Sender: TObject);
var i:integer;
//marge_haut:integer; // marge au dessus du edit 2
begin
with ScrollBoxDC do
for i:= ComponentCount-1 downto 0 do
if ((Components[i] is TComboBox) and (TComboBox(Components[i]).Text = 'parmi')) then
begin
// On crée l'edit 2
with TEdit.Create(ScrollBoxDC) do
begin
Parent := ScrollBoxDC;
Left := 255;
Top := 16 + TComboBox(Components[i]).Top;
Width := 130;
Text := '(...,...,...)';
Visible := True;
end;
end
end; |
Voilà ma procédure, qui est lancé chaque fois qu'on sélectionne 'parmi' dans mes combobox !
Donc ça marche, c'est génial.
Juste un truc : j'ai voulu faire que le 2ème edit (edit2) ne se crée que lorsqu'on sélectionne 'parmi' dans la combo.
Mais le code ci dessus me donne une erreur : en fait, il a pas l'air de connaitre le i dans la ligne : Top := TComboBox(Components[i]).Top;
L'erreur est : "index de liste hors limite".
Keske je peux faire ????
:?:?:?:?
Encore merci pour vos réponses, c'est génial de voir à quel point vous êtes rapides et efficaces !!
Camille
:roll: