Главная страница
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.044 c
15-1171537147
ryslan56
2007-02-15 13:59
2007.03.11
HTML


15-1171367467
Ega23
2007-02-13 14:51
2007.03.11
статья забавная


2-1171643622
sat
2007-02-16 19:33
2007.03.11
delay??


9-1145199906
Kaviss
2006-04-16 19:05
2007.03.11
ODE dSpaceCollide (space,nil,nearCallback); ошибка


15-1171379370
dmdel
2007-02-13 18:09
2007.03.11
Кто использует FB