Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получить свойства контрола из DFM / 3 сообщений из 3, страница 1 из 1
16.10.2017, 05:06:54
    #39536654
Лись
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить свойства контрола из DFM
Есть на форме Label1: TLabel с определенным текстом, который считывается из DFM.

Далее в коде текст лейбла меняется, типа Label1.Caption := 'some new text'.

Как можно получить изначальный текст который был там до присваивания (то есть как-то можно перечитать свойства из DFM)?
...
Рейтинг: 0 / 0
16.10.2017, 07:57:04
    #39536676
ma1tus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить свойства контрола из DFM
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    FLabelOldCaption: string;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  FLabelOldCaption := Label1.Caption;
end;

...
Рейтинг: 0 / 0
16.10.2017, 08:29:22
    #39536681
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить свойства контрола из DFM
Чтение свойств из ресурсов
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
procedure TForm1.Button1Click(Sender: TObject);
var RS: TResourceStream;
    R: TReader;

function ReadProp(R: TReader): string;
begin
  Result := '';
  case R.NextValue of
    vaInt8, vaInt16, vaInt32: Result := IntToStr(R.ReadInteger);
    vaExtended: Result := FloatToStr(R.ReadFloat);
    vaString:   Result := R.ReadString;
  else R.SkipValue;
  end;
end;

procedure ReadRes(PropPath: string; R: TReader);
var S: string;
begin
  R.ReadStr;
  if PropPath = ''
    then S := R.ReadStr
    else S := PropPath + '.' + R.ReadStr;
  while not R.EndOfList do
    Memo1.Lines.Add(S + '.' + R.ReadStr + '=' + ReadProp(R));
  R.CheckValue(vaNull);
  while not r.EndOfList do begin
    ReadRes(S, R);
    R.CheckValue(vaNull);
  end;
end;

begin
  RS := TResourceStream.Create(HInstance, 'TForm1', RT_RCDATA);
  R := TReader.Create(RS, 1024);
  try
    Memo1.Clear;
    R.ReadSignature;
    ReadRes('', R);
  finally
    R.Free;
    RS.Free;
  end;
end;
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получить свойства контрола из DFM / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]