|
Les constantes qui renvoient aux couleurs du système les plus approchantes sont clAqua, clBlack, clBlue, clDkGray, clFuchsia, clGray, clGreen, clLime, clLtGray, clMaroon, clNavy, clOlive, clPurple, clRed, clSilver, clTeal, clWhite, et clYellow.
Les constantes qui renvoient aux couleurs des éléments écran du système sont clActiveBorder, clActiveCaption, clAppWorkSpace, clBackground, clBtnFace, clBtnHighlight, clBtnShadow, clBtnText, clCaptionText, clGrayText, clHighlight, clHighlightText, clInactiveBorder, clInactiveCaption, clInactiveCaptionText, clMenu, clMenuText, clScrollBar, clWindow, clWindowFrame et clWindowText.
Permet d'effacer toute la liste.
ListBox1.clear
Autorise ou non la multi sélection dans la liste.
form3.listbox1.multiselect:=true
Voici un certain nombre de méthodes.
Question
Comment récupérer dans une zone d'édition, l'item sélectionné d'une listBox ?
Réponse
Edit1.text:=ListBox.Items[listBox.ItemIndex]
de 0 à ListBox1.Items.Count-1
ListBox1.Items.add('TOTO');
for i:=1 to g_maxA do
form3.listbox1.items.add(g_appreciation[i]);
Permet d'effacer l'élément de rang i de la liste. La liste commence au rang 0. (Voir exemple ci-dessous)
Permet d'insérer au rang i de la liste (voir exemple ci-dessous).
Permet de déplacer deux items. Voir les propriétés de TStrings.
Permet de savoir si un item est sélectionné ou non.
for i:=0 to g_maxE-1 do
if ListBox1.Selected[i] then begin
Assignfile(f,g_NomFicEtud);
reset(f);
seek(f,i+1);
read(f,enreg);
Form1.Edit1.Text:=enreg.N1;
Form1.Edit2.Text:=Enreg.N2;
ListBox1.Items.Delete(i);
ListBox1.Items.Insert(i,'*
'+enreg.N1+' '+enreg.N2);
Form1.Edit3.Text:=f_nomfic(g_NomficEtud);
closefile(f);
end;
end;
exemple :
if CB.ItemIndex>-1 then
CB.Items.Delete(CB.ItemIndex);
if Form4.ListBox1.Items.strings[j] =
g_Examen[g_nec].N1 + ' ' + g_Examen[g_nec].N2 then
Form4.listBox1.Items.Strings[j] := '* ' + g_Examen[g_nec].N1+'
'+g_Examen[g_nec].N2;
S'applique à TList, TStringList, TStrings (objets)
procedure Exchange(Index1, Index2:
Integer);
La méthode Exchange permute la position de deux éléments dans la liste d'un objet liste, d'une liste de chaînes, d'une chaîne, ou d'un objet liste de chaînes. Les éléments sont spécifiés par leur valeur d'indice dans les paramètres Index1 et Index2. Comme les valeurs d'indice partent de 0, le premier élément dans la liste a une valeur d'indice 0, le deuxième élément a une valeur d'indice 1, etc.
Si une chaîne dans un objet chaîne ou liste de chaînes dispose d'un objet associé, Exchange permute à la fois la position des chaînes et celle des objets.
Cet exemple utilise une boîte liste contenant plusieurs chaînes comme valeur de la propriété Items, ainsi qu'un bouton. Lorsque l'utilisateur clique sur celui-ci, le deuxième et le troisième élément de la boîte liste sont permutés.
procedure
TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Exchange(1, 2);
end;
LoadFromFile
Cette propriété est une propriété de Tstrings donc utilisable avec Items
exemple :
LB.Items.LoadFromFile('Machin.txt')
ListBox et Memo. Chargement et focalisation
Nom:='TOTO.TXT';
Memo1.Lines.LoadFromFile(Nom.ext);
ou
encore
OpenDialog1.Execute;
Memo1.Lines.LoadFromFile(OpenDialog1.filename);
SaveToFile(Nom.ext)
Procedure Machin;
var
FileName:string;
begin
FileName:='C:\Windows\win.ini';
with
Memo1.lines do
begin
LoadFormFile(FileName);
SaveToFile(ChangeFileExt(FileName,'.BAK'))
..end;
end;
if FileExists(NomFic)
then
with (ActiveMDIChild as TFormfille) do begin
MemoVar.Clear;
MemoVar.Lines.LoadFromFile(nomfic);
end
else showmessage('Fichier des variables non trouvés');
Après un LoadFromFile, vous constatez que vos lignes sont découpées n'importe où, pas nécessairement sur 0D.0A. en hexa. C'est que votre représentation de la zone mémo est trop petite. Il faut l'agrandir même si elle est cachée (comme dans EditAlgo)
Cette instruction est utilisable. Chaîne de 255 caractères contenant les sauts de lignes sous la forme #$D#$A. Voir la procédure pCompresse de l'unité uImprime que j'ai écrite à ce propos.
Soit MtexteP un champ memo.
MtexteP.clear;
for
k:=1 to max do MtexteP.Lines.Add(tc[k]);
On peut aussi utiliser le Count (i de 0 à count-1).
On peut utiliser aussi la commande MEMO.Lines.Append(S)
Add est une fonction qui renvoie le numéro i de la lignes Lines[i].
SelPos est du type Integer.
SelPos
:= Pos(FindText, Memo1.Lines.Text);
ou encore
SelPos := Pos(FindText, Memo1.Text);
if
SelPos > 0 then begin
Memo1.SetFocus
Memo1.SelStart
:= SelPos - 1;
Memo1.SelLength
:= Length(FindText);
end
Le texte peut ne pas être trouvé si passage à la ligne à cause du #$D#$A qu'il peut contenir en son milieu.
Comment écrire directement dans un StringGrid ?
Dans la propriété Options (Inspecteur d'objet), activer à true la sous propriété d'ensemble goEditing..
procedure TForm1.Button1Click(Sender:
TObject);
var
I, J: Integer;
begin
with StringGrid1 do
for I := 0 to ColCount - 1 do
for J:= 0 to RowCount - 1 do
Cells[I,J] := '
end;
Le code suivant sélectionne le rectangle contenant les lignes 1 et 2, et les colonnes 3 et 4 :
StringGrid1.Selection := Rect(3,1,2,4);
Le code suivant enregistre un objet TBitmap (MyBitmap) dans la cellule de la ligne 3, colonne 10 de StringGrid1.
StringGrid1.Objects[10, 3] := MyBitmap;
Le code suivant sélectionne le rectangle contenant les lignes 1 et 2, et les colonnes 3 et 4 :
StringGrid1.Selection := Rect(3,1,2,4);
Le code suivant enregistre un objet TBitmap (MyBitmap) dans la cellule de la ligne 3, colonne 10 de StringGrid1.
StringGrid1.Objects[10, 3] := MyBitmap;
procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode:
TScrollCode;
var ScrollPos: Integer);
begin
if ScrollCode = scPageUp then ScrollPos := ScrollPos - 1
else if ScrollCode = scPageDown then ScrollPos := ScrollPos + 10;
Label1.Caption := IntToStr(ScrollPos);
end;
ScrollBar1.SmallChange := 10;
ScrollBar1.LargeChange := 100;
ScrollBar1.Min := StrToInt(Edit1.Text);
ScrollBar1.Max := ScrollBar1.Min + 1000;
ScrollBar1.Position := 750;
Le code suivant affiche une boîte message avec les noms de tous les champs de la table.
procedure TForm1.Button2Click(Sender: TObject);
var
i: Integer;
Info: String;
begin
Info := 'Les champs sont :'#13#10#13#10;
for i := 0 to Table1.FieldCount - 1
do
Info := Info +
Table1.Fields[i].FieldName + #13#10;
ShowMessage(Info);
end;
Question
Comment focaliser un élément d'une ListBox?
Réponse
Utiliser ItemIndex.
Question
Comment charger un fichier text dans une ListBox depuis un mémo (de même largeur)?
Réponse
Memo.clear;
Memo.visible:=false;
LB.Clear;
Memo.Lines.LoadFromFile('Exercice1.txt');
for i:=0 to Memo.Lines.Count-1 do
LB.Items.Strings[i]:=Memo.Lines.Strings[i];
LB.ItemIndex:=r.ins;
ListBox et Sélection
Question
Comment avoir la liste des éléments
sélectionnés dans une liste LB ?
Réponse
LB.SelCount
Question
Comment savoir si un élément est sélectionné ?
Réponse
if LBD.Selected[i] then …