Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите разобраться начинающему [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<>'');


Наверх

Титульная страница Поиск, карта сайта Написать письмо