Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.11;
Скачать: CL | DM;

Вниз

Помогите разобраться начинающему   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.031 c
6-1159790021
Script
2006-10-02 15:53
2007.03.11
Пинг нескольких компов одновременно


11-1150184429
DevilDevil
2006-06-13 11:40
2007.03.11
эквивалент SpinEdit? Key preview?


15-1171541037
Gin2
2007-02-15 15:03
2007.03.11
DB2 Express-C 9 - кто-то юзает?


15-1171538435
Ega23
2007-02-15 14:20
2007.03.11
Миграция с Delphi5 на Delphi7


15-1171313306
DemonP
2007-02-12 23:48
2007.03.11
карта памяти ПЭВМ