Ĺ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
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.