powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Классы
10 сообщений из 10, страница 1 из 1
Классы
    #32133678
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет. Такой вопрос.
Перебираю компоненты на форме.
var but:TButton;
ed:TEdit;
i:DWord;
...
for i:=0 to form.componentcount-1 do
begin
if form.components is TEdit then
begin
ed:=form.components as TEdit;
....
end;
if form.components is TButton then
begin
ed:=form.components as TButton;
....
end;
end;
...
Вопрос! Существует ли тип данных(или объект), которому можно было бы передавать компонент со всеми его свойствами, чтобы не заволить кучу переменных под каждый класс.

var Temp:<Класс>
i:DWord;
...
for i:=0 to form.componentcount-1 do
begin
if form.components is TEdit then
begin
Temp:=form.components as TEdit;
....
end;
if form.components is TButton then
begin
Temp:=form.components as TButton;
....
end;
end;
...
...
Рейтинг: 0 / 0
Классы
    #32133692
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TObject - это предок всего и вся. Если перебираешь компоненты, можешь использовать TComponent. А зачем переменной присваивать. Че делать дальше будешь?
...
Рейтинг: 0 / 0
Классы
    #32133709
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая фича не проидет, пробовал.
Если я хоче обратиться в edit'e к св-ву Text, то ничего не компилится, его нет ни у TObject, ни у TComponent. А деляется это для того, чтобы проверить все ли поля юзер заполнить, компонент на форме много, а тупо задавать что надо проверить не хоца(да и гибкости охота, чтобы еще где-нить использовать).
...
Рейтинг: 0 / 0
Классы
    #32133716
xp writer wannabe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[src]
var
c: TComponent;
begin

for i := 0 to ComponentCount - 1 do
begin
c := Components ;
if c is TCustomEdit then
with TCustomEdit(c) do
begin
.....
end
else if c is TButton then
with TButton(c) do
begin
.....
end
.....
end;
end;
...
Рейтинг: 0 / 0
Классы
    #32133724
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А деляется это для того, чтобы проверить все ли поля юзер заполнить, компонент на форме много, а тупо задавать что надо проверить не хоца(да и гибкости охота, чтобы еще где-нить использовать).

Если с базой работаешь, то используй DBAware контролы и проверяй на BeforePost. Если работаешь с разными компонетами (TEdit, TListBox) то без явного приведения к одному из используемых типов не получиться.
...
Рейтинг: 0 / 0
Классы
    #32133735
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реально!
Спасибо. И последнее, как фокус ввода на такую штуку поставить, вылетает Access violation. Это приложение клиента, и транзакция пойдет только после заполнения всех полей
...
Рейтинг: 0 / 0
Классы
    #32133860
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
транзакция пойдет только после заполнения всех полей

Еще один с транзакциями на клиенте
...
Рейтинг: 0 / 0
Классы
    #32133971
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> tygra
согласен
...
Рейтинг: 0 / 0
Классы
    #32134074
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну-ну :)
Транзакция не на клиенте(делать больше не ... чтоли). Используется Corba технология, так что если точнее пойдет команда серверу. Ну так как с SetFosus????
...
Рейтинг: 0 / 0
Классы
    #32134079
bjohny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все разобрался спасиб
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Классы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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