Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.49 MB
Время: 0.06 c
2-1171628712
Nightingale
2007-02-16 15:25
2007.03.11
MediaPlayer


2-1171814200
Аликъ
2007-02-18 18:56
2007.03.11
Listview удаление НЕвыделенных строк


2-1171836522
barakuda
2007-02-19 01:08
2007.03.11
Написал CGI приложение (windows + Apach)


15-1171365764
Ega23
2007-02-13 14:22
2007.03.11
как по-аглицки будет


2-1171513689
Wiktor
2007-02-15 07:28
2007.03.11
Передача EXE-файла с помощью TServerSocket и TClientSocket





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский