Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
ВнизEdit & UpDown Найти похожие ветки
← →
Flood_control © (2007-09-21 12:36) [0]У меня такой вопрос вот, уже очень долго не могу решить такую вот проблему, есть у меня объект Edit и к нему привязаный объект UpDown, мне надо сделать так что когда я нажимаю на поднять значение (Up) на объекте UpDown что бы в Edite покаместь значения не достигнут цифры 10 к цифрам прибавлялся 0 перед ними, что бы если у меня значение 00 и я нажимаю Up на объекте то что бы у меня в Edite значение становилось не 1 а 01, как такое сделать?
← →
Ega23 © (2007-09-21 12:40) [1]
if Length(Edit.Text)=1 then Edit.Text := "0" + Edit.Text
?
← →
Leonid Troyanovsky © (2007-09-21 16:52) [2]
> Flood_control © (21.09.07 12:36)
> такую вот проблему, есть у меня объект Edit и к нему привязаный
> объект UpDown
Можно сделать ему примерно такой обработчик OnChangingEx
procedure TFormX.UpDownXChangingEx(Sender: TObject; var AllowChange: Boolean; NewValue: Smallint; Direction: TUpDownDirection);
begin
with (Sender as TUpDown).Associate as TEdit do
Text := Format("%2.2d", [NewValue]);
AllowChange := False;
end;
Но, скорее всего, нужен специализированный TWinControl, умеющий
отображать данные необходимым образом.
Для потомков TCustomEdit, видимо, потребуется свой обработчик
WM_SETTEXT, IMHO.
--
Regards, LVT.
← →
Flood_control © (2007-09-23 19:59) [3]Хорошо, спасибо за ответы, отталкиваюсь от варианта if Length(Edit.Text)=1 then Edit.Text := "0" + Edit.Text
Только вот появился еще одна проблема, раньше пока еще объект UpDown не был Associate с Edit ом моим данный из моего Edita сохранялись и загружались из ini файла при новом старте приложения, но если мой эдит привязан (Associate) к UpDown то данные из ini файла не загружаються (возможно загружаються но сразу затираються и в поле с данными становиться просто 0 и всё). Как вылечить это? Пробывал уже делать так что загружаеться программа в поле у эдита стоят числа которые были и перед закрытием программы UpDown еще не привязан, а привяжеться по нажатию на сам объект, нажимаю, он привязываеться и в поле у Edita становиться 0, как с этим бороться?
← →
Kolan © (2007-09-23 20:15) [4]> нажимаю, он привязываеться и в поле у Edita становиться
> 0, как с этим бороться?
НУ очевидно запомнить то что было до привязки, привязать, и востановить значение пользуясь сохраненным…
← →
Flood_control © (2007-09-23 22:16) [5]Пробывал такой метод, при нём возникают некоторые проблемы. Загружаеться форма, в Edit загружаються данные из ini файла, и потом по нажатию на UpDown он у меня привязываеться и в этот момент значения обнуляються там становиться 0. Я так понимаю что в привязке Edit и UpDown у них есть общий параметр того что заполняеться в поле Text у Edit"а ?
← →
{RASkov} © (2007-09-23 23:19) [6]
> [5] Flood_control © (23.09.07 22:16)
При загрузки значений из ини присвайвай не эдиту, а UpDown.Position....
← →
Kolan © (2007-09-24 08:52) [7]> [5] Flood_control © (23.09.07 22:16)
> Пробывал такой метод, при нём возникают некоторые проблемы.
> Загружаеться форма, в Edit загружаються данные из ini файла,
> и потом по нажатию на UpDown он у меня привязываеться и
> в этот момент значения обнуляються там становиться 0. Я
> так понимаю что в привязке Edit и UpDown у них есть общий
> параметр того что заполняеться в поле Text у Edit"а ?
Млин, может наконец отодроть бизнез логику от представления?
Объясняю на пальцах.
1. Делаешь класс:TMyDataClass = class //Название выбери нормальное
private
FData: Integer;
FChangeEvent: TNotifyEvent;
public
property OnChange: TNotifyEvent read FChangeEvent write FChangeEvent;
property Data: Integer read FData write SetData;
end;
procedure TMyDataClass.SetData(const Value: Integer);
begin
if Value <> FData then
begin
FData := Value;
if Assigned(ChangeEvent) then
FChangeEvent(Self);
end;
end;
Загружаешь данные из ini в Data экземпляра TMyDataClass.
В обработчике OnChange экземпляра TMyDataClass пишешь:procedure ChangeEvent(Sender: TObject);
begin
if Sender is TMyDataClass then
Edit.Text := IntToStr((Sender as TMyDataClass).Data);
end;
Аналогично при нажатии UpDown изменяешь экземпляр TMyDataClass, а не Edit.
← →
Leonid Troyanovsky © (2007-09-24 09:22) [8]
> Kolan © (24.09.07 08:52) [7]
> Млин, может наконец отодроть бизнез логику от представления?
А бизнес-логика в представлении единиц двумя цифрами? :)
Ну, если так, то нужен бизнес-компонент,
что-то типа TFormatViewEdit.
> Аналогично при нажатии UpDown изменяешь экземпляр TMyDataClass,
> а не Edit.
UpDown сам меняет (ассоциированный) Edit - вот такой это
виндовый контрол.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2007-09-24 09:30) [9]
> Kolan © (24.09.07 08:52) [7]
> В обработчике OnChange экземпляра TMyDataClass пишешь:
> procedure ChangeEvent(Sender: TObject);
> begin
> if Sender is TMyDataClass then
> Edit.Text := IntToStr((Sender as TMyDataClass).Data);
Нехорошая зависимость класса от элемента формы,
обработчик-то не формы.
Кста, держатель ссылки должен заботиться о ее валидности.
Notification!
--
Regards, LVT.
← →
Kolan © (2007-09-24 09:39) [10]> обработчик-то не формы.
Да я же тут писал. Ессно:procedure TForm1.ChangeEvent(Sender: TObject);
>
> UpDown сам меняет (ассоциированный) Edit — вот такой это
> виндовый контрол.
Идея загружать из ини в Edit — неверная…
← →
{RASkov} © (2007-09-24 13:25) [11]> [7] Kolan © (24.09.07 08:52)
Нафик весь этот огород? :)
TUpDown как раз нечто такое и есть...
Еще раз
//UpDown.Associate:=Edit;
UpDown.Position:=AINI.ReadInteger("", "", 0);
> [10] Kolan © (24.09.07 09:39)
> Идея загружать из ини в Edit — неверная…
Зачем в Эдит? В UpDown нужно :)
← →
Flood_control © (2007-09-25 21:59) [12]Спасибо всем за ответы, теперь понял что надо загружать в UpDown.
Но появился еще один глупый вопрос, как записать данные в ини файл из ListBox1? Вот так я записую из опен диалога ini.WriteString("Parametres", "MFO", opendialog1.FileName);, но на листбокс ругаеться что данные там не стрин а Тстринг...
← →
{RASkov} © (2007-09-25 23:31) [13]> [12] Flood_control © (25.09.07 21:59)
> записать данные в ини файл из ListBox1?
> данные там не стрин а Тстринг...
for i:=0 to ListBox.Items.Count-1 do Записать i-ый итэм который имеет тип String //ListBox.Items[i]
← →
uuyda (2007-09-28 17:14) [14]<a href= http://rpz3zmr75a.com >Google</a>
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.057 c