Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 2.470 pregleda

Najnovija ↓

Imena svih kontrola na formi 13.12.2010. u 10:39 · pre 193 meseca
izmenjeno 1 put, poslednji put franjo_tahi 13.12.2010. u 14:38
  1. franjo_tahi13.12.2010. u 14:38zapis iz teksta poruke
#1
Trebaju mi: imena i caption (ako ga ima ta kontrola) za sve kontrole koje se nalaze na nekoj formi.
Napravio sam to, ali mislim da bi trebalo moći jednostavnije...
Koristim npr proceduru:
Code:

procedure TForm1.GetKontrole;
var i: integer;
begin
    m.Lines.Clear;
    for i := 0 to Form1.ControlCount - 1 do begin
       if form1.Controls[i].ClassNameIs('tPanel') then
          GetZaPanel(TPanel(form1.Controls[i]));
    end;
end;

procedure TForm1.GetZaPanel(Panel: TPanel);
var i: integer;
begin
   m.Lines.Append(Panel.Name + ' // ' + Panel.Caption)
   for i := 0 to Panel.ControlCount- 1 do begin
      if Panel.Controls[i].ClassNameIs('tPanel') then GetZaPanel(TPanel(Panel.Controls[i]));
   end;
end;


na ovaj način moram raditi za svaku vrstu kontrola zasebnu proceduru.
Mora postojati jednostavniji (krači) način...

Mala nadopuna:
kako otkriti da li je na formi TMainMenu ? Nemože se dobiti s
Code:

if Form.Controls[i] is tMainMenu then ...
Re: Imena svih kontrola na formi 13.12.2010. u 15:25 · pre 193 meseca #2
> na ovaj način moram raditi za svaku vrstu kontrola zasebnu proceduru. Mora postojati jednostavniji (krači) način...

Ovde je primer za setovanje teksta, možeš lako prepraviti za uzimanje.

Code:

procedure TLangResources.ApplyLang(AComp: TComponent);
var
  i: Integer;
  Temp: WideString;
  PropInfo: PPropInfo;

  procedure ProcessMenu(AItem: TMenuItem);
  var
    i: Integer;
  begin
    for i := 0 to AItem.Count - 1 do
    begin
      ProcessMenu(AItem[i]);
      ApplyLang(AItem[i]);
    end;
  end;

begin
  if AComp is TWinControl then
  begin
    for i := 0 to TWinControl(AComp).ControlCount - 1 do
      ApplyLang(TWinControl(AComp).Controls[i]);

    if (AComp is TCustomForm) and Assigned(TCustomForm(AComp).Menu) then
      ProcessMenu(TCustomForm(AComp).Menu.Items);
  end;

  if AComp.Tag <> 0 then
  begin
    Temp := FRes.Values[IntToStr(AComp.Tag)];
    if Temp <> '' then
    begin
      PropInfo := GetPropInfo(AComp, 'Caption');
      if PropInfo = nil then
        PropInfo := GetPropInfo(AComp, 'Text');

      if PropInfo <> nil then
        SetWideStrProp(AComp, PropInfo, Temp);
    end;
  end;
end;
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Imena svih kontrola na formi 13.12.2010. u 16:27 · pre 193 meseca #3
kako otkriti da li je na formi TMainMenu ? Nemože se dobiti s
Code:


if Form.Controls[i] is tMainMenu then ...


Evo primera:

Code:

for i := 0 to Form1.ControlCount - 1 do begin
       if (Form1.Controls[i] is TPanel) then
         if ((Form1.Controls[i] as TPanel).Parent is TMainMenu) then
            ....


pozdrav
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme