Конференция "KOL" » Как перебрать на форме все контролы? [Delphi, Windows]
 
  • andreil © (26.02.08 21:52) [0]
    Собственно надо это мне для того, чтобы программа сама читала Caption'ы и Text'ы контролов из ИНИ-файла для облегчения перевода на другие языки. Те я ищу код следующего содержания:

    For i:=0 to КоличесвоКонтроловНаФорме do
    begin
     If (Control[i] is TKOLEditBox) then
       (Control[i] as TKOLEditBox).Text:=LanguageIni.ValueInteger((Control[i] as TKOLEditBox).Text, (Control[i] as TKOLEditBox).Text);
    end;



    Те если, например контрол содержит строку "#Label", то ему в Caption надо будет считать из ИНИфайла параметр #Label.

    ЗЫ: работе с ИНИфайлами можете не учить - и сам умею, мне надо просто узнать:
    1)как перебрать все контролы на форме;
    2)каким методом можно определить принадлежность контрола к даннгому типу (тотже TKOLEditBox).
  • Jon © (27.02.08 00:46) [1]
    Conditional defines: USE_NAMES

    // Add USE_NAMES to conditional defines!
    procedure TForm1.Button1Click(Sender: PObj);
    var
     INIfile: PIniFile;
     I: Integer;
     NewCaption: String;
    begin
     INIfile := OpenIniFile(ChangeFileExt(ExePath,'.ini'));
     INIfile.Section := 'caption';
     for I := 0 to Form.ChildCount -2 do
     begin
       NewCaption := INIfile.ValueString(Form.Children[I].Name,'');
       if NewCaption <> '' then Form.Children[I].Caption := NewCaption;
     end;
     INIfile.Free;
    end;



    Project1.ini

    [caption]
    label1=Label One
    button1=My Button
    editbox1=This is a test

  • andreil © (27.02.08 09:53) [2]
    Спасибо ;) Но я обошолся без USE_NAMES, просто читал из ИНИшника по Caption'ам каждого контрола :)
 
Конференция "KOL" » Как перебрать на форме все контролы? [Delphi, Windows]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]