Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: CL | DM;

Вниз

Как перебрать все объекты типа TEdit на форме??   Найти похожие ветки 

 
Lamer666   (2007-11-06 21:52) [0]

Подскажите пожалуйста Как перебрать все объекты типа TEdit на форме??
Спасибо!


 
Dib@zol ©   (2007-11-06 22:13) [1]

procedure TForm1.FormCreate(Sender: TObject);
const
 s = 255;
var
 i : Cardinal;
 P : PChar;
begin
 for i:=0 to ComponentCount-1 do begin
   GetMem(P, s);
   try
     GetClassName((Components[i] as TWinControl).Handle, P, s);
     ShowMessage(P);
     // ...
     // Тут проверяешь на принадлежность класса к TEdit и делаешь что нужно
     // ...
     FreeMem(P, s);
   except end;
 end;
end;


 
palva ©   (2007-11-06 22:17) [2]

procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
for i:=0 to ComponentCount - 1 do
 if Components[i].ClassName = "TEdit" then
   ShowMessage((Components[i] As TEdit).Text);
end;


 
DrPass ©   (2007-11-06 22:18) [3]


>  for i:=0 to ComponentCount-1 do begin
>    GetMem(P, s);
>    try
>      GetClassName((Components[i] as TWinControl).Handle,
>  P, s);
>      ShowMessage(P);
>      // ...
>      // Тут проверяешь на принадлежность класса к TEdit
> и делаешь что нужно
>      // ...
>      FreeMem(P, s);
>    except end;
>  end;

Шо за бред?

for i:=0 to ComponentCount-1 do
  if Components[i] is TEdit then ...

и все


 
Kolan ©   (2007-11-06 22:27) [4]

> Dib@zol ©   (06.11.07 22:13)

Прикрати маятся. ПЕши хоть на ассемблере в соотв ветке, не трож начинающих. :(


 
Riply ©   (2007-11-06 23:53) [5]

procedure EnumEditRec(const aComp: TComponent);
var
EnumComp: TComponent;
begin
for EnumComp in aComp do
 if EnumComp is TEdit then ShowMessage(EnumComp.Name) else
  if EnumComp is TFrame then EnumEditRec(EnumComp);
end;


 
Tmp   (2007-11-07 00:12) [6]

Riply ©   (06.11.07 23:53) [5]

Цэ шо? :)


 
Riply ©   (2007-11-07 00:17) [7]

> [6] Tmp   (07.11.07 00:12)
> Цэ шо? :)

Эта... рекурсивная перебора эдитов однако. :)


 
Tmp   (2007-11-07 00:28) [8]


> Riply ©   (07.11.07 00:17) [7]

Ээээ.... Нэ работает :(
:)


 
Riply ©   (2007-11-07 00:32) [9]

Как вызываешь ?
procedure TMainForm.SpeedButton1Click(Sender: TObject);
begin
EnumEditRec(Self);
end;

Может у тебя на форме Edit`ов нет ? :)


 
guav ©   (2007-11-07 00:35) [10]

> [9] Riply ©   (07.11.07 00:32)


> Может у тебя на форме Edit`ов нет ? :)

скорее нету фор ич в компиляторе :)


 
Riply ©   (2007-11-07 00:42) [11]

> [10] guav ©   (07.11.07 00:35)

Привет !

> скорее нету фор ич в компиляторе :)
Ну так заменить тогда на for i := 0 to

P.S.
> [10] guav
По Вашему заданию сижу и собираю нестандартные случаи :)


 
DrPass ©   (2007-11-07 00:43) [12]


> Riply ©   (06.11.07 23:53) [5]

У парня ж Delphi 7. Не издевайся над человеком


 
Riply ©   (2007-11-07 00:45) [13]

> [12] DrPass ©   (07.11.07 00:43)
> У парня ж Delphi 7. Не издевайся над человеком

Sorry... Не знала...

Надо заменить
for EnumComp in aComp do
на
for i:=0 to ComponentCount-1 do


 
guav ©   (2007-11-07 00:51) [14]

<off>
> Riply ©

ICQ включить можешь ?
</off>


 
Riply ©   (2007-11-07 00:56) [15]

> [14] guav ©   (07.11.07 00:51)
<off>
> Riply ©
>ICQ включить можешь ?
Сейчас нет. :(
У меня многое "похоронено" под Убунтей :)
Я вхожу с др. компьютера.
</off>


 
Tmp   (2007-11-07 01:16) [16]


> Riply ©   (07.11.07 00:32) [9]
> Как вызываешь ?

Если это вопрос мне(что скорее всего) то:
Я никак ее не вызывал, просто посмотрел на "написание" кода и сделал вывод о не работоспособности этого кода в D7
;)


 
Германн ©   (2007-11-07 01:34) [17]


> Riply ©   (06.11.07 23:53) [5]

Когда ты задаёшь свои весьма "продвинутые" вопросы в этой конференции это я понимаю. Но ответы всё же в ней должны быть более простыми или хотя бы должны сопровождаться объяснениями :-)


 
Riply ©   (2007-11-07 07:06) [18]

>[17] Германн ©   (07.11.07 01:34)
> Но ответы всё же в ней должны быть более простыми или хотя бы должны сопровождаться объяснениями :-)
Ну вот. Все на меня бедную напали. И ты, Брут. Тьфу - Сергей. :)
За то, что я не учла, что у автора Delphi 7, я уже принесла извинения.
А какие пояснения нужны к этой процедуре, я до сих пор не вижу.
Или надо было нашпиговать три строчки кода фразами типа:
"перебираем компоненты", "проверяем не Edit-ли(не Frame- ли)", "выводим сообщение" ?
:)


 
Lamer666   (2007-11-07 13:46) [19]

Большое спасибо:Dib@zol,palva,DrPass,Kolan,Riply,Tmp,guav,Германн.
С уваженеим Lamer666
ДА и еще хотел спросить, а если нужно обратиться к какому-нибудь свойству поля TEDIT, например MaxLength, в этом переборе?


 
Reindeer Moss Eater ©   (2007-11-07 13:51) [20]

при поиске эдита лучше перебирать не компоненты а контролы


 
Ega23 ©   (2007-11-07 13:53) [21]


> при поиске эдита лучше перебирать не компоненты а контролы


Тогда рекурсивная переборка всех контролов, ибо Edit может и на панели лежать, а панель уже на форме.


 
Lamer666   (2007-11-07 13:57) [22]


> при поиске эдита лучше перебирать не компоненты а контролы

а как присвоить значение в свойство MaxLength? Его нет в списке свойств "контролов"


 
Lamer666   (2007-11-07 13:59) [23]


> Тогда рекурсивная переборка всех контролов, ибо Edit может
> и на панели лежать, а панель уже на форме.

Есть и такое! : ((


 
Anatoly Podgoretsky ©   (2007-11-07 14:04) [24]

> Ega23  (07.11.2007 13:53:21)  [21]

Но тоже относится и к Components


 
Reindeer Moss Eater ©   (2007-11-07 14:04) [25]

а как присвоить значение в свойство MaxLength?

Привести найденный контрол к типу TEdit


 
Lamer666   (2007-11-07 14:44) [26]


> Привести найденный контрол к типу TEdit

: ))
Протите, а как?
Controls[i].ClassType:=TEdit;
ругаеться! : (


 
Reindeer Moss Eater ©   (2007-11-07 14:49) [27]

Ругается потому что это не приведение, а присвоение.
Я тебе про приведение говорил.


 
Skyle ©   (2007-11-07 14:50) [28]


> Lamer666   (07.11.07 14:44) [26]
>
> > Привести найденный контрол к типу TEdit
>
> : ))
> Протите, а как?
> Controls[i].ClassType:=TEdit;
> ругаеться! : (


(Controls[I] as TEdit).MaxLength


 
Lamer666   (2007-11-07 14:51) [29]


> Reindeer Moss Eater ©   (07.11.07 14:49) [27]



> Skyle ©   (07.11.07 14:50) [28]


Ясно, теперь буд знать! Спасибо!


 
Ega23 ©   (2007-11-07 14:53) [30]


> (Controls[I] as TEdit).MaxLength


Если более правильно, то
if (Controls[i] is TEdit) then
 TEdit(Controls[i]).MaxLength ....


 
Kolan ©   (2007-11-07 14:54) [31]

> Ясно, теперь буд знать! Спасибо!

На 95 процентов я уверен что тебе ненадо проходится по всем контролам&#133
Опеши задачу, мож наталкнём тебя на здравую мысль&#133


 
Lamer666   (2007-11-07 14:55) [32]


> Ega23 ©   (07.11.07 14:53) [30]

: ))) Спасиб!


 
Skyle ©   (2007-11-07 14:55) [33]


> Ega23 ©   (07.11.07 14:53) [30]

Я так понял на тему if Controls[I] is TEdit говорили первые 25 постов, поэтому и не указал...


 
Lamer666   (2007-11-07 15:02) [34]


> На 95 процентов я уверен что тебе ненадо проходится по всем
> контролам…
> Опеши задачу, мож наталкнём тебя на здравую мысль…

В общем задача такая:
1. На форме есть TEDIT-ы, на форме есть TabSheet-ы на них тоже есть TEDIT-ы.
2. Есть таблица в базе данных на MSSQL сервере, некоторые поля таблицы имеют ограницения, например 12 символов
Ну в общем что бы при выполнении хранимой процедуры не проверять длинну введенного в каждом поле значения, я просто хочу ограничить поля на длинну ввода! Вот!


 
Ega23 ©   (2007-11-07 15:04) [35]


> Есть таблица в базе данных на MSSQL сервере, некоторые поля
> таблицы имеют ограницения, например 12 символов


Тип полей char(12) или varchar(12)?


 
Lamer666   (2007-11-07 15:09) [36]

varchar(12)


 
Kolan ©   (2007-11-07 15:17) [37]

> На форме есть TEDIT-ы,


> некоторые поля таблицы имеют ограницения

Сколько же у тебя этих эдитов?


 
Ega23 ©   (2007-11-07 15:20) [38]

Хотя без разницы. Сервер автоматом обрежет


 
Ega23 ©   (2007-11-07 15:21) [39]


> varchar(12)


Забей болт.


 
Kolan ©   (2007-11-07 15:23) [40]

> Забей болт.

Ну ты сказал&#133 Люди будут пол дня вводить ничего не подозревая, а сервер будет все резать&#133



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

Текущий архив: 2007.12.02;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.035 c
15-1192084197
de.
2007-10-11 10:29
2007.12.02
to Delphi 7


2-1194416145
XIO
2007-11-07 09:15
2007.12.02
Delphi .Net и XML


15-1193476157
marinator
2007-10-27 13:09
2007.12.02
MSXML


15-1194063967
SerJaNT
2007-11-03 07:26
2007.12.02
Рейтинг учащихся


2-1192718804
Barracudic
2007-10-18 18:46
2007.12.02
Как програмно запустить приложение?