![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите разобраться начинающему [D7]
mikki © (2007-02-18 12:03:00)Я совсем новичок в программировании. Знаю мало, опыт небольшой. ...короче ничего 'путного' пока не получилось. Перелопатил кучу литературы, ну и чем дальше, тем больше неясностей.
На данный момент пытаюсь связать компонент edit c button так что бы при невводе данных в edit или удаления из него, button бы блокировался не давая выполнять дальнейшие инструкции приложения....если дальнейшие инструкции выполняются то при пустом edit появляется ошибка...работа приложения останавливается это в общих чертах.
Понятно что здесь можно решить по разному, но мне нужно именно увязать работу этих компонентов.
...Может быть и есть готовые форм, но ведь хочется разобраться.
Помогите, мож кто сталкивался. Или может я не туда куда полез ?
RASkov (2007-02-21 21:52:00) [1]> [13] mikki © (21.02.07 21:38)
:)
Trim вообщем-то не причем. Эта функция возврощает строку без ведомых и ведущих пробелов (т.е. до строки и после пробелы удаляет)
ее я на всякий случай вставил :) оказалось пригодилось :)
mikki (2007-02-21 21:38:00) [2]Button1.Enabled := (Trim(Edit1.Text)<>''); именно то что нужно.
А я как только не мудрил, тут оказывается функции одной достаточно.
Спасибо!
Правда остается загадкой че за Trim такой(такая)...будем искать :)
RASkov (2007-02-20 00:00:00) [3]> [9] mikki © (19.02.07 22:39)
При таком подходе мышой лучше не елозить, если в едите нет текста, иначе застрянет и "навечно"...
Ну сделай как в [1],[2] посоветовали:
procedure TForm1.Edit1Exit();
begin
Button1.Enabled := (Trim(Edit1.Text)<>'');
end;
или
procedure TForm1.Edit1Change();
begin
Button1.Enabled := (Trim(Edit1.Text)<>'');
end;
vasIZmax (2007-02-19 23:53:00) [4]
> procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState;
>
> > X,
> > Y: Integer);
> > begin
> > while Form1.Edit1.Text = '' do
> > begin
> > Form1.Button1.Enabled := false;
> >
А зачем тебе это? А если я не буду пользоваться мышью, а нажму Tab и спокойно перейду к кнопке?
mikki (2007-02-19 22:39:00) [5]ой:-)
mikki (2007-02-19 22:36:00) [6]
> >Leonid Troyanovsky
>
> >Ну, и, наконец, можно обойтись без создания компонента,
>
> т.е. настроив обычные TEdit &TButton
>
> так я и делаю , как только я их не мучал...
> Button1.Enabled := (Edit1.Text''); и это пробовал и по
> всякому.
> короче дошёл вот до чего
> procedure TForm1.Edit1KeyPress(Sender: TObject; var Key:
> Char);
>
> begin
> case key of
> '0' .. '9',#8: ; // цифры и клавиша
>
>
> #13: Form1.Button1.SetFocus; // нажатие клавиши
>
>
> else key := chr(0); //все остальные
> символы запрещаю
> end;
>
>
> end;
>
> procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState;
> X,
> Y: Integer);
> begin
> while Form1.Edit1.Text = '' do
> begin
> Form1.Button1.Enabled := false;
>
> end;
> всё равно не работает вроде как все окно блокируется или
> может на чём 'застревает'
>
>
>
clickmaker (2007-02-19 12:41:00) [7]Еще можно посмотреть в сторону Action и Action.OnUpdate
iXT (2007-02-19 12:36:00) [8]
> ну и чем дальше, тем больше неясностей
Ну это нормально :)
Amoeba (2007-02-19 12:26:00) [9]Еще можно посмотреть в строну TApplicationEvents.OnIdle и в там прописать Button.Enabled := Length(Trim(Edit.Text)) > 0
Leonid Troyanovsky (2007-02-18 16:21:00) [10]
> MsGuns © (18.02.07 16:12) [4]
> Леонид, поясните все же, зачем для каждой ерунды типа сабжевой
> создавать какие-то классы, а тем более писать компоненты
Не знаю, видимо, показалось - хотел, мол, разобраться окончательно,
не зря ж столько книг прочитано.
Может лишь одной не хватило :)
--
Regards, LVT.
MsGuns (2007-02-18 16:12:00) [11]Леонид, поясните все же, зачем для каждой ерунды типа сабжевой создавать какие-то классы, а тем более писать компоненты ?
Разве что для качества понимания ООП ?
Leonid Troyanovsky (2007-02-18 13:02:00) [12]
> mikki © (18.02.07 12:03)
> Понятно что здесь можно решить по разному, но мне нужно
> именно увязать работу этих компонентов.
Тут возможны несколько подходов (по возрастанию трудоемкости):
1. Создание композитного компонента (sorry, не помню, как точно
подобное зовут) на основе, например, панели или TFrame.
2. Модификация стандартного TEdit для работы в паре
с обычной кнопкой (или TBitBtn, TSpeedButton).
3. Написание собс-ного компонента на базе TCustomEdit, или даже,
возможно, что практически с 0, т.е. с TWinControl.
Выбор варианта зависит от требуемого поведения и доступных
ресурсов. Но, в любом случае, стоит пойти в библиотеку и почитать, например: Рей Конопка. Создание компонентов в среде Дельфи.
Ну, и, наконец, можно обойтись без создания компонента,
т.е. настроив обычные TEdit &TButton by [1,2].
--
Regards, LVT.
Ega23 (2007-02-18 12:09:00) [13]TEdit.OnChange, OnExit
Ega23 (2007-02-18 12:09:00) [14]Button1.Enabled := (Edit1.Text<>'');