← Back to topics
Topic

delphi pitanje

n
nemanja1990
please ljudi, jel ima neko ideju kako u delphiju da realizujem sledecu stvar

imam gomilu objekata istog tipa, i potpuno su identicni, a jedina razlika im je naziv

zelim nekako da im pristupam kao npr clanovima niza, ili tako nesto

jer ja recimo moram u nekom momentu da za neko i=25 uzmem 25-i a za i=32 da uzmem 32-i objekat, a to ne mogu jer to nije niz pa da kazem a[i] i gotovo nego moram da dajem ceo naziv

ja sam mislio da to odradim koristeci pokazivace pa da na pocetku imam niz pokazivaca ka tim objektima ali bi mi to pretrpalo kod a i ne znam kako da ih deklarisem u ovom slucaju

ako znate kako da napravim niz objekata(ako to moze), ili kako da vestacki implementiram nesto tako da mogu objektima da pristupam kao nizu, ili ako znate neki objekat koji je kao neka tabela kojoj se moze pristupati pomocu indeksa ili bilo sta slicno, molio bih vas da mi kazete, jer me mnogo muci ovo
n
nemanja1990
hvala na pomoci, ali ne mogu bas tako da pristupam

meni je potrebno da promenim osobinu neke komponente

na primer ovako nesto
for i:=1 to n do
?????????[i].visible:=true;
p
picsel
Ja sam imao skoro isti problem i nisam uspeo da nadjem resenje (veliki pocetnik za Delphi sam) i na kraju sam napravio program u Pascalu koji generise kod za svaku komponentu :)
Ali mi je kod ispao 2000 linija, sto je opet lose, mada radi.
Tako da i mene zanima odgovor na ovo
h
halil
Moraš ipitivati koje su klase komponente iz datog skupa. Evo ti moj primer:


procedure TMainForm.ColorControl(Sender: TObject);
var
I: Integer;
F: TForm;
C: TComponent;
begin
F:= Screen.ActiveForm;
if (F <> nil) then with F do begin
for I:= 0 to ComponentCount -1 do begin
C:= Components[I];
if C is TEdit then
if (C as TEdit).Focused then (C as TEdit).Color := clInfoBk
else (C as TEdit).Color := clWindow;
if C is TDBEdit then
if (C as TDBEdit).Focused then (C as TDBEdit).Color := clInfoBk
else (C as TDBEdit).Color := clWindow;
if C is TMemo then
if (C as TMemo).Focused then (C as TMemo).Color := clInfoBk
else (C as TMemo).Color := clWindow;
if C is TDBMemo then
if (C as TDBMemo).Focused then (C as TDBMemo).Color := clInfoBk
else (C as TDbMemo).Color := clWindow;
if C is TComboBox then
if (C as TComboBox).Focused then (C as TComboBox).Color := clInfoBk
else (C as TComboBox).Color := clWindow;
if C is TDBComboBox then
if (C as TDBComboBox).Focused then (C as TDBComboBox).Color := clInfoBk
else (C as TDBComboBox).Color := clWindow;
if C is TDBLookupComboBox then
if (C as TDBLookupComboBox).Focused then (C as TDBLookupComboBox).Color := clInfoBk
else (C as TDBLookupComboBox).Color := clWindow;
end;
end;
end;


U ovom slučaju interesuju me atributi 'Focused' i 'Color'.
Dakle, treba ti

if (komponenta is klase) then ... (komponenta as klasa).atribut/metod

Pozdrav.

n
nemanja1990
Hvala obojici, ispostavilo se da je isti odgovor kao i onaj prvi samo da ide razmak izmedju as i tedit.

Super je sad, sve radi.