powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как получить свойство компонента по имени?
9 сообщений из 9, страница 1 из 1
Как получить свойство компонента по имени?
    #39803762
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делается обход всех компонент, у некоторых нужно прочитать свойства, делаю так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
procedure TfrmAdmin.SaveComToDB(form: string);
var z: integer;   capp: string; TUniLabel: TComponent;
begin
 capp:='NULL';
 for z := 0 to ComponentCount-1 do
  begin
  UniMemo1.Lines.Add(Components[z].ClassName+'='+Components[z].Name+'='+capp);

    if Components[z].ClassName= 'TUniLabel' then
    begin
     capp:=(FindComponent(Components[z].ClassName) as TUniCustomLabel).Caption;
    end;
    if Components[z].ClassName= 'TUniTabSheet' then
    begin
       capp:=(FindComponent(Components[z].ClassName) as TUniTabSheet).Caption
    end;
    if Components[z].ClassName= 'TUniButton' then
    begin
       capp:=(FindComponent(Components[z].ClassName) as TUniButton).Caption;
    end;


Свойство не заполняется. Подскажите, где туплю? За ранее всем благодарна.
...
Рейтинг: 0 / 0
Как получить свойство компонента по имени?
    #39803765
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ColaДелается обход всех компонент, у некоторых нужно прочитать свойства, делаю так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
procedure TfrmAdmin.SaveComToDB(form: string);
var z: integer;   capp: string; TUniLabel: TComponent;
begin
 capp:='NULL'; // Переставь в начало блока 
 for z := 0 to ComponentCount-1 do
  begin
  UniMemo1.Lines.Add(Components[z].ClassName+'='+Components[z].Name+'='+capp);// в конец блока переставь

    if Components[z].ClassName= 'TUniLabel' then
    begin
     capp:=(FindComponent(Components[z].ClassName) as TUniCustomLabel).Caption;
    end;
    if Components[z].ClassName= 'TUniTabSheet' then
    begin
       capp:=(FindComponent(Components[z].ClassName) as TUniTabSheet).Caption
    end;
    if Components[z].ClassName= 'TUniButton' then
    begin
       capp:=(FindComponent(Components[z].ClassName) as TUniButton).Caption;
    end;


Свойство не заполняется. Подскажите, где туплю? За ранее всем благодарна.
...
Рейтинг: 0 / 0
Как получить свойство компонента по имени?
    #39803773
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cola
Код: pascal
1.
FindComponent


Это поиск по имени (UniLabel1, например) компонента, а не по наименованию его класса.
...
Рейтинг: 0 / 0
Как получить свойство компонента по имени?
    #39803777
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanCola
Код: pascal
1.
FindComponent


Это поиск по имени (UniLabel1, например) компонента, а не по наименованию его класса.
Да и вообще - нахрена искать, если объект уже на руках.

Код: pascal
1.
2.
3.
if Components[z].ClassName= 'TUniLabel' then
    begin
     capp:=(FindComponent(
...
Рейтинг: 0 / 0
Как получить свойство компонента по имени?
    #39803800
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
...
Рейтинг: 0 / 0
Как получить свойство компонента по имени?
    #39803804
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем вообще по имени класса что-то делать?

Код: pascal
1.
2.
3.
4.
  ...
  if Components[z] is TUniLabel then
    capp := TUniLabel(Components[z]).Caption;
  ...
...
Рейтинг: 0 / 0
Как получить свойство компонента по имени?
    #39803888
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
procedure TfrmAdmin.SaveComToDB(form: string);
var i: integer;
    S: string;
begin
  for i := 0 to ComponentCount-1 do begin
    if IsPublishedProp(Components[i], 'Caption') then S := GetStrProp(Components[i],'Caption') else S := 'null';
    UniMemo1.Lines.Add(Components[i].ClassName+'='+Components[i].Name+'='+S);
  end;
end;
...
Рейтинг: 0 / 0
Как получить свойство компонента по имени?
    #39804831
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr if IsPublishedProp(Components[i], 'Caption') ......
[/src]В этом вся проблема. Не все нужные свойства - паблишед. Кратко, но не универсально... :(
...
Рейтинг: 0 / 0
Как получить свойство компонента по имени?
    #39805109
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoВ этом вся проблема. Не все нужные свойства - паблишед. Кратко, но не универсально... :(
Можно получить и PUBLIC свойства
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как получить свойство компонента по имени?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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