Glabājiet stīgu kopā ar stīgu Delphi's ListBox

click fraud protection

Delphi's TListBox un TComboBox parāda vienumu sarakstu - virknes "izvēles" sarakstā. TListBox parāda ritināmo sarakstu, TComboBox parāda nolaižamo sarakstu.

Visu iepriekšminēto vadības ierīču kopējais īpašums ir Priekšmeti īpašums. Vienumi nosaka virkņu sarakstu, kas lietotājam parādīsies vadības ierīcē. Projektēšanas laikā, veicot dubultklikšķi uz rekvizīta Vienumi, “Virkņu saraksta redaktors” ļauj norādīt virkņu elementus. Īpašums Items faktiski ir TStrings tipa pēcnācējs.

Divas virknes par vienumu saraksta kastē?

Pastāv situācijas, kad vēlaties parādīt virkņu saraksts lietotājam, piemēram, saraksta lodziņa kontrolē, bet ir arī veids, kā saglabājiet vēl vienu papildu virkni gar to, kas parādīta lietotājam.

Turklāt, iespējams, vēlēsities virknei uzglabāt / pievienot vairāk nekā tikai “vienkāršu” virkni pievienot priekšmetam priekšmetu (virkni).

ListBox. Priekšmeti - TStrings "zina" objektus!

Piešķiriet objektam TStrings vēl vienu izskatu palīdzības sistēmā. Tur ir Objekti īpašums, kas apzīmē objektu kopu, kas ir saistīts ar katru no

instagram viewer
stīgas īpašumā Strings - ja īpašība Strings atsaucas uz faktiskajām virknēm sarakstā.

Ja vēlaties katrai saraksta lodziņā piešķirt virkni (vai objektu), jums jāpapildina rekvizīti Vienumi izpildes laikā.

Lai gan jūs varat izmantot ListBox. Priekšmeti. Pievienot metode virkņu pievienošanai sarakstam, objekta saistīšanai ar katru virkni, jums būs jāizmanto cita pieeja.

ListBox. Priekšmeti. AddObject metode pieņem divus parametrus. Pirmais parametrs “Vienums” ir preces teksts. Otrais parametrs “AObject” ir objekts, kas saistīts ar vienumu.

Ņemiet vērā, ka saraksta lodziņā ir parādīts AddItem metode, kas darbojas tāpat kā preces. AddObject.

Divas stīgas vienai stīgai

Tā kā abi priekšmeti. AddObject un AddItem pieņem TObject veida mainīgo lielumu otrajam parametram, piemēram, līnijai:

// sastādīt kļūdu!
ListBox1.Items. AddObject ('zarko', 'gajic'); 

radīs apkopošanas kļūdu: E2010 nesaderīgi veidi: “TObject” un “string”.

Nevar vienkārši piegādāt objekta virkni, jo Delphi for Win32 virknes vērtības nav objekti.

Lai saraksta lodziņa vienumam piešķirtu otru virkni, virknes mainīgais "jāpārveido" objektā - jums ir nepieciešams pielāgots TString objekts.

Vesels skaitlis stīgām

Ja otrā vērtība, kas jums jāuzglabā kopā ar virknes vienumu, ir vesela skaitļa vērtība, jums faktiski nav nepieciešama pielāgota TInteger klase.

 ListBox1.AddItem ('Zarko Gajic', TObject (1973)); 

Augšējā rindā tiek saglabāts vesels skaitlis "1973" kopā ar pievienoto virkni "Zarko Gajic".

Iepriekš tiek parādīta tieša veida zīme no vesela skaitļa uz objektu. Parametrs "AObject" faktiski ir pievienotā objekta 4 baitu rādītājs (adrese). Tā kā Win32 skaitlis aizņem 4 baitus, ir iespējama tik cieta atlase.

Lai atgrieztos veselo skaitli, kas saistīts ar virkni, jums jāatsauc "objekts" atpakaļ uz vesela skaitļa vērtību:

// gads == 1973. gads
gads: = vesels skaitlis (ListBox1.Items. Objekti [ListBox1.Items. IndexOf ('Zarko Gajic')]); 

Stīgas Delphi vadība

Kāpēc apstāties šeit? Stīgu un veselu skaitļu piešķiršana virknei saraksta lodziņā, kā jūs tikko pieredzējāt, ir kūka.

Tā kā Delphi vadīklas faktiski ir objekti, jūs varat pievienot vadīklu katrai saraksta lodziņā parādītajai virknei.

Šis kods pievieno veidlapai visu TButton vadīklu parakstus ListBox1 (saraksta lodziņā) (ievietojiet to veidlapas OnCreate notikumu apstrādātājā) kopā ar atsauci uz katru pogu.

var idx: vesels skaitlis; sāktpriekš idx: = 0 uz -1 + ComponentCount darītsāktja Sastāvdaļas [idx] ir TBtton tad ListBox1.AddObject (TButton (komponenti [idx]). Paraksts, komponenti [idx]); beigas; beigas; 

Lai programmētiski "noklikšķiniet" uz pogu "otrais", varat izmantot nākamo paziņojumu:

 TBatton (ListBox1.Items. Objekti [1]). 

Es gribu stīgu vienumam piešķirt savus pielāgotus objektus

Vispārīgākā situācijā jūs pievienotu savu pielāgoto nodarbību gadījumus (objektus):

tips TStudent = klasePrivāts fName: virkne; fGads: vesels skaitlis; publiskiīpašums Vārds: stīgu lasīt fName; īpašums Gads: vesels skaitlis lasīt fYear; konstruktors Izveidot (const vārds: virkne; const gads: vesels skaitlis); beigas;... konstruktors TStudents. Izveidot (const vārds: virkne; const gads: vesels skaitlis); sākt fName: = nosaukums; gadsGads: = gads; beigas; sākt// pievienojiet sarakstam divas virknes / objektus -> studentus ListBox1.AddItem ('John', TStudent. Izveidot ('Jānis', 1970)); ListBox1.AddItem ('Jack', TStudent. Izveidot ('Jack', 1982)); // greifers pirmais students - Jānis students: = ListBox1.Items. Objekti [0]  TStudents; // parādīt Jāņa gadu ShowMessage (IntToStr (students. Gads)); beigas; 

Tas, ko jūs izveidojat, jums ir jāatsakās

Palīdzība jāsaka par objektiem TStrings pēcnācējos: objektam TStrings nepieder objekti, kurus jūs pievienojat šādā veidā. Objekti, kas pievienoti TStrings objektam, joprojām pastāv, pat ja TStrings instance tiek iznīcināta. Viņiem jābūt skaidri iznīcināts pēc pieteikuma.

Pievienojot objektiem virknēm - izveidotajiem objektiem - jums jāpārliecinās, vai esat atbrīvojis aizņemto atmiņu, jo pretējā gadījumā jums būs atmiņas noplūde

Vispārēja pielāgota procedūra FreeObjects pieņem vienīgo parametru TStrings mainīgo. FreeObjects atbrīvos visus objektus, kas saistīti ar virkņu saraksta vienumu. Iepriekšminētajā piemērā "studenti" (TStudent klase) ir pievienoti virkne saraksta lodziņā, kad programma tiks slēgta (piemēram, OnDestroy notikuma galvenā forma), jums ir jāatbrīvo atmiņa aizņemts:

 FreeObjects (ListBox1.Items); 

Piezīme. Jūs šo procedūru saucat tikai tad, ja jūs esat izveidojis objektus, kas piešķirti virkņu vienumiem.

instagram story viewer