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