![]() |
|
|
Регистрация | << Правила форума >> | 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)
|