Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.11.16;
Скачать: [xml.tar.bz2];

Вниз

Выяснить наличие св-в Caption и Text   Найти похожие ветки 

 
123-ий ©   (2008-10-08 11:58) [0]

Перебираю компоненты формы таким способом:

 for i := 0 to ComponentCount - 1 do
   Components[i].блаблабла

Так вот можно ли выяснить, есть ли у данного компонента свойство Caption или Text?
Надо для того, чтобы сделать локализацию. Файлик с нужными строками грузится в память, и надо чтобы для всех контролов выставились Caption"ы и Text"ы из этого файлика. То есть ситуация такая, что есть строки (причем в начале каждой строки содержится параметр, указывающий куда эту строку "затолкнуть", то есть строка выглядит так: <Control>.<Property> = "блаблабла"), есть нужные компоненты, надо это всё как то совместить.


 
Palladin ©   (2008-10-08 12:00) [1]

http://www.delphimaster.ru/cgi-bin/forum.pl?n=18&search=%F1%E2%EE%E9%F1%F2%E2%EE+Caption


 
Rouse_ ©   (2008-10-08 12:23) [2]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, StdCtrls;

type
 TForm1 = class(TForm)
   Label1: TLabel;
   Memo1: TMemo;
   Edit1: TEdit;
   Button1: TButton;
   CheckBox1: TCheckBox;
   ListBox1: TListBox;
   ComboBox1: TComboBox;
   ScrollBar1: TScrollBar;
   Panel1: TPanel;
   procedure Button1Click(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

uses
 TypInfo;

type
 TTextProperty = (tpCaption, tpText);
 TTextPropertyes = set of TTextProperty;

function QueryTextProperty(AObject: TObject): TTextPropertyes;
var
 I: Integer;
 FList: PPropList;
 FCount, FSize: Integer;
begin
 Result := [];
 if AObject = nil then Exit;
 if AObject.ClassInfo <> nil then
 begin
   FCount := GetPropList(AObject.ClassInfo, tkProperties, nil);
   FSize := FCount * SizeOf(Pointer);
   GetMem(FList, FSize);
   try
     GetPropList(AObject.ClassInfo, tkProperties, FList);
     if FCount > 0 then
       for I := 0 to FCount - 1 do
         case FList^[I].PropType^.Kind of
           tkString, tkLString, tkWString:
             if FList^[I].Name = "Caption" then
               Include(Result, tpCaption)
             else
               if FList^[I].Name = "Text" then
                 Include(Result, tpText);
         end;
   finally
     FreeMem(FList);
   end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 I: Integer;
 TextPropertyes: TTextPropertyes;
 OutputString, CommaString: String;
begin
 Memo1.Lines.Clear;
 for I := 0 to ComponentCount  - 1 do
 begin
   TextPropertyes := QueryTextProperty(Components[I]);
   if TextPropertyes <> [] then
   begin
     OutputString := Components[I].Name;
     CommaString := "";
     if tpCaption in TextPropertyes then
     begin
       OutputString := OutputString + " has Caption";
       CommaString := ", ";
     end;
     if tpText in TextPropertyes then
       OutputString := OutputString + CommaString + " has Text";
     Memo1.Lines.Add(OutputString);
   end;
 end;
end;

end.


 
{RASkov} ©   (2008-10-08 12:36) [3]

Может пригодится в решении задачи:
type
 TForm1 = class(TForm)
   Button1: TButton;
   Panel1: TPanel;
   CheckBox1: TCheckBox;
   Label1: TLabel;
   RadioButton1: TRadioButton;
   RadioGroup1: TRadioGroup;
   GroupBox1: TGroupBox;
   Edit1: TEdit;
   MaskEdit1: TMaskEdit;
   SpeedButton1: TSpeedButton;
   BitBtn1: TBitBtn;
   LabeledEdit1: TLabeledEdit;
   procedure Button1Click(Sender: TObject);
 private { Private declarations }
 public  { Public declarations }
 end;

var Form1: TForm1;

implementation
{$R *.dfm}
type TCtrl = class(TControl);
procedure TForm1.Button1Click(Sender: TObject);
var N: Integer;
begin
 for N:=0 to ComponentCount-1 do
  if Components[N] is TControl then TCtrl(Components[N]).Text:="This "+Components[N].Name;
end;

end.


 
123-ий ©   (2008-10-08 13:26) [4]

ух ты. спасибо, помогли :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.11.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.026 c
15-1221345698
Per Pra
2008-09-14 02:41
2008.11.16
"Perfect Prattle" или "Идеальная потрепаловка - 2"


2-1222958697
Terasbetoni
2008-10-02 18:44
2008.11.16
Как узнать, уничтожен ли объект.


15-1221798199
@!!ex
2008-09-19 08:23
2008.11.16
Гугель наглеет.


2-1223295289
Урсулапов
2008-10-06 16:14
2008.11.16
как связаться с *.fdb-базой в delphi 7?


15-1221824595
Jeer
2008-09-19 15:43
2008.11.16
Просьба





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский