|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Доброго времени суток!
Возникла необходимость работать с эдитами в unit2 (или как там его назвать) но столкнулся с проблемой, при использовании FindComponent... Если я обращаюсь напрямую, напр.: Код:
MainForm.Edit1.text := ''; //MainForm:TMainForm; Но если мне, напр. нужно очистить все edit Код:
for j:=1 to 14 do begin MainForm.FindComponent(('Edit' + IntToStr(j)) as TEdit).text := ''; end; То уже говорит что "TEdit необъявленный идентификатор" Как класс TEdit сделать доступным для unit2? Спасибо. И да.... Пробовал сделать так: Код:
type TmyEdit = class(TEdit) Последний раз редактировалось M.A.D.M.A.N., 09.04.2015 в 13:14. |
#2
|
||||
|
||||
добавить в uses StdCtrls
Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
avis_rara (09.04.2015)
|
#3
|
|||
|
|||
спасибо это помогло, но теперь пишет что "operator not applicable to this operand type" (оператор, не применимый к этому типу операнда).
Это про строку : Код:
MainForm.FindComponent(('Edit' + IntToStr(j)) as TEdit)).text := ''; У unit1(main) я пишу Код:
(FindComponent('Edit' + IntToStr(j)) as TEdit).text := ''; а в unit2 пытался Код:
TMainForm(FindComponent('Edit' + IntToStr(j)) as TEdit).text := ''; то же самое... а просто Код:
MainForm.Edit1.text :=''; MainForm.Edit2.text :=''; //и т.п. работает |
#4
|
||||
|
||||
Код:
TEdit(Form1.FindComponent('Edit'+IntToStr(1))).Text:='Ok'; Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
avis_rara (09.04.2015)
|
#5
|
|||
|
|||
Цитата:
ОГРОМНОЕ спасибо! Цитата:
Спасибо. Понял, туплю... нужно добавить ComCtrls=) Продолжаю я свою оптимизацию кода... У меня на GroupBox, есть порядка 20-ти элементов shape. Они у меня по задумке должны играть роль кнопок. Но не хотелось бы создавать на каждый из них обработчик Код:
procedure TMainForm.Shape20MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Код:
procedure TMainForm.GroupBox1Click(Sender: TObject) Как при этом можно отследить на какой из шейпов было нажато? Все элементы Shape созданы вручную, а не программно... Код:
procedure TMainForm.GroupBox1Click(Sender: TObject) var j:byte; begin for j:=1 to 20 do begin //проверяем все по очереди не он ли нажат //если "shape(j)" нажат то изменяем какую-то переменную из массива x[j]:=1; end; end; Спасибо. Не судите строго, я только учусь.... Последний раз редактировалось avis_rara, 09.04.2015 в 16:19. |
#6
|
||||
|
||||
У вас ведь есть уже такой замечательный помощник в энтом деле как Sender, т.е. тот - кто сработал, в данном случае вам остаётся напр. задать свойство Tag у ваших "кнопарей" по-порядку, в смысле shape1.tag = 1.. shape20.tag = 20 в обжект инспекторе, а дальше прописать в единственном обработчике клика такое
Код:
x[(Sender as TShape).Tag]:=1; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
avis_rara (09.04.2015)
|
#7
|
|||
|
|||
Спасибо!!!
|
#8
|
|||
|
|||
Что-то не получается... не могу понять где я не въехал...
Для всех shape в Object Inspector - е установил tag от 1 до 20ти. Код:
procedure TMainForm.GroupBox1Click(Sender: TObject); begin if (Sender as TShape).Tag = 1 then //если попали на первый то меняем его цвет... TShape(FindComponent('Shape'+IntToStr(1))).Brush.Color := clLime; end; END. И самое интересное, что когда нажимаю на любой из шейпов то реакции нет, а когда мимо них то программа выбивает ошибку.... А если изменить на то что просто нужно нажать на GroupBox (у него tag=0) Код:
procedure TMainForm.GroupBox1Click(Sender: TObject); begin if (Sender as TGroupBox).Tag = 0 then TShape(FindComponent('Shape'+IntToStr(1))).Brush.Color := clLime; end; END. По сути при нажатии на шейп я не попадаю в процедуру GroupBox1Click. Разобрался=) в Events каждого шейпа поставил обработчик GroupBox11MouseDown Последний раз редактировалось avis_rara, 10.04.2015 в 10:43. |
#9
|
||||
|
||||
Вообще-то я вот такой пример подразумевал, извнт, раз с первого заходу не смог объяснить толково
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |