ďťż

Ładny brzuch

Witam. Chce stworzyc ComboBox na podstawie tabeli.
tabela zawiera pola : ID | IMIE | NAZWISKO

W liscie rozwijanej chcialbym miec polaczonego stringa IMIE + NAZWISKO ale jezeli wybiore ta wartosc chcialbym zeby przekazywal ID .

Jak to zrobic ??

I jak np wyswietlic wartosc ID w innej formatce np w Edit ??



Jakiego typu jest ID ?? Bo może wystarczy użyć AddObject i rzutowania ...

string

to byl tylko przyklad sytacji raz bedzie to integer a raz string :|


string

to byl tylko przyklad sytacji raz bedzie to integer a raz string :|



Bardzo Ci dziekuje :) Oto mi chodzilo :)

=======

Jednak nie jest dobrze:| W przypadku inta przekazuje OK. Ale jezeli to string to sie krzaczkuje. Przekazuje cos innego :/

Pomozecie ;> ??
Użytkownik matchor edytował ten post 16 styczeń 2006, 22:13

Jednak nie jest dobrze:| W przypadku inta przekazuje OK. Ale jezeli to string to sie krzaczkuje. Przekazuje cos innego :/

No jednak trzeba to zrobić inaczej. Np tworzysz sobie własną klasę (nazwijmy ją TStringObject) i w niej przechowujesz żądanego stringa.
I tak deklaracja klasy i jej konstruktor Create mogą wyglądać tak:
type TStringObject = class(TObject)      private       FStringDoPrzechowania: String;      public       constructor Create(AString: String);       property StringDoPrzechowania: String read FStringDoPrzechowania write FStringDoPrzechowania;     end; constructor TStringObject.Create(AString: String); begin FStringDoPrzechowania := AString; end;

Teraz używanie - dodawanie stringa do ComboBoxa:
var SS: TStringObject; SS := TStringObject.Create(ID); // Tworzenie obiektu i ustawianie jaki string ma być przechowywany (ID w tym przypadku) //Dodawanie do ComboBoxa ComboBox1.Items.AddObject(IMIE + ' ' + NAZWISKO, SS);

Odczytywanie:
Edit1.Text := TStringObject(ComboBox1.Items.Object[ComboBox1.ItemIndex]).StringDoPrzechowania;

Przy usuwaniu Itema z ComboBoxa najpierw musisz zwolnić obiekt a dopiero wtedy usuwać poniewać będą wycieki pamięci. Czyli:
var Item_Do_Usuniecia: integer; TStringObject(ComboBox1.Items.Object[Item_Do_Usuniecia]).Free; ComboBox1.Items.Delete(Item_Do_Usuniecia);

I teraz powinno działać ze stringami poprawnie.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •