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

Вниз

Как перебрать все объекты типа 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.064 c
15-1193636264
boriskb
2007-10-29 08:37
2007.12.02
Сниму 2-х комнатную в Москве.


2-1194237848
Masher
2007-11-05 07:44
2007.12.02
Консольный калькулятор


3-1184426535
__alex
2007-07-14 19:22
2007.12.02
Про BDE4 и BDE5


15-1193766687
@!!ex
2007-10-30 20:51
2007.12.02
где почитать про дебагинг под Delphi


15-1193574821
DeadMeat
2007-10-28 15:33
2007.12.02
Опять про *.bpl





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский