Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];

Вниз

Изменение активной записи по скролбару...:(   Найти похожие ветки 

 
dUM ©   (2005-06-24 17:18) [0]

Написана локальная база, BDE, paradox, всё такое. Использую компоненты TDataSource, TQuery, TUpdateSQL. Для отображения данных: TDBLookupListBox, TDBEdit, и т.п. В лукаплистбоксе заполнены поля ListSource, KeyField и ListField. DataSource и DataField - пустые.

Проблема: при скроллинге в компоненте TDBLookupListBOX, у меня меняется активная запись. Не подскажите как убрать данный казус?


 
Amoeba ©   (2005-06-24 18:08) [1]

Надо использовать данный компонент правильно, а не черт-те-как. DataSource и DataField не должны быть пустыми. Матчасть надо учить.


 
dUM ©   (2005-06-24 21:35) [2]

Не, мне правда не нужны DataSource и DataField. У меня в таблице содержатся в каждой записи - некие наименования и их описания. Не буду же я делать отдельную таблицу для того, чтобы вывести наименования НЕ черте-как в лукаплистбокс! :) Кстати я попробывал, всё-равно скачет по записям при использовании скрол бара. Проблему это не решит.


 
ЮЮ ©   (2005-06-25 09:28) [3]

А ты как хотел, если в одном компоненте премещаешься по набору данных, то и в других увидишь то же самое.

Создай отдельный DataSet для TDBLookupListBox. Возможно, хватит просто отдельного DataSource, но, ИМНО, маловероятно.


 
dUM ©   (2005-06-25 13:03) [4]

Не, ну это всё хорошо да. Но возможно-ли избавиться от данной проблемы? Чтобы активная запись не изменялась при пролистывании списка скрулбаром?


 
dUM ©   (2005-06-26 13:11) [5]

Подскажите хотябы как отловить событие, которое срабатывает при кликании по скролбару...


 
P.N.P. ©   (2005-06-26 13:20) [6]

>dUM ©   (26.06.05 13:11) [5]
Не спасет тебя отлов сообщений о скроллинге.
См. ЮЮ ©   (25.06.05 09:28) [3]
Для TDBLookupListBox.ListSource надо брать отдельный DataSet и DataSource.


 
sniknik ©   (2005-06-26 14:09) [7]

DBLookupListBox.Enabled:= False; и все дела, и никто из него скролингом (и ничем другим) не изменит активную запись.


 
dUM ©   (2005-06-26 14:32) [8]

sniknik ©   (26.06.05 14:09) [7]

:)
Вот мне надо всем другим, кроме скролинга :)

Ладно, попробую по уму сделать - вместе с DataSet-ом и DataSource-ом, если вы настаиваете что с таким раскладом по скролбару запись меняться не будет. Не будет? :)


 
sniknik ©   (2005-06-26 15:07) [9]

> Вот мне надо всем другим, кроме скролинга :)
т.е. клавишами позиция должна двигаться?

чтобы не плодить компонент, можно так

type
 TMyDBLookupListBox = class(TDBLookupListBox)
 private
   procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
 end;

 TForm1 = class(TForm)
   ...
   DBLookupListBox1: TDBLookupListBox;
   procedure FormCreate(Sender: TObject);
   ...
 private
   MyDBLookupListBox1: TMyDBLookupListBox;
 end;

procedure TMyDBLookupListBox.WMVScroll(var Message: TWMVScroll);
begin
 {nothing}
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 MyDBLookupListBox1:= TMyDBLookupListBox.Create(Self);
 with MyDBLookupListBox1 do begin
   Parent:= self;
   Left  := DBLookupListBox1.Left;
   Top   := DBLookupListBox1.Top;
   Width := DBLookupListBox1.Width;
   Height:= DBLookupListBox1.Height;

   ListSource:= DBLookupListBox1.ListSource;
   KeyField  := DBLookupListBox1.KeyField;
   ListField := DBLookupListBox1.ListField;
 end;
 FreeAndNil(DBLookupListBox1);
end;


 
dUM ©   (2005-06-26 19:06) [10]

sniknik ©   (26.06.05 15:07) [9]

ухтыыы :) Клёво :) Я и не знал что так можно :) Так это можно всё подряд под себя переделать, без написания своих компонент... Потряс :)

А что нужно вставить вместо {nothing}, чтобы список листался, но активная запись не менялась?


 
-=XP=- ©   (2005-06-26 19:33) [11]

А что нужно вставить вместо {nothing}, чтобы список листался, но активная запись не менялась?

2 sniknik ©

Попал по полной?.. :))

2 dUM ©

Не задавайте, пожалуйста, таких вопросов, а лучше разберитесь, как работают связки DataSet-DataSource-DBAwareComponent, и что такое Lookup. Тогда вопросы отпадут сами. А "странное" поведение некоторых контролов хоть и не изменится, но станет понятнее.


 
sniknik ©   (2005-06-26 19:51) [12]

> ухтыыы :) Клёво :) Я и не знал что так можно :) Так это можно всё подряд под себя переделать, без написания своих компонент... Потряс :)
основы ООП, для того и нужно чтобы не писать все, что до тебя было а использовать написанное. почитай про него, рекомендую.

> А что нужно вставить вместо {nothing}, чтобы список листался, но активная запись не менялась?
ты так ничего и не понял... в гриде данных НЕТ, в списке (TDBLookupListBox) данных НЕТ, и т.д. они там только отображаются... а берутся для отображения из DataSet-а. и если хочеш отображать данные в одном компоненте начало в другом конец данных то и вставить туда нужно то что содержит данные, еще в [3] тебе это сказали.
но вообще впечатление, что ты используеш компонент не "по адресу".

p.s. если думаеш что от повторений или перефразировки вопроса ответ на него изменится то ты сильно заблуждаешся. для этого вопрос надо изменить в корне, спрашивать другое.

> 2 sniknik ©
> Попал по полной?.. :))
надеюсь нет, образумится. ;о)))


 
dUM ©   (2005-06-26 21:43) [13]

>sniknik ©   (26.06.05 19:51) [12]

Да, видимо я использую TDBLookupListBox не по назначению. Он у меня служит в качестве основного списка, с помощью которого пользователь перемещается по записям. То есть в списке - некие названия. Кликает по названиям, получает содержимое. Других подходящих компонент из стандартного набора я не встретил. Подскажите что тогда лучше для этого использовать, если я не прав в корне.

С ООП я знаком только поверхностно, поэтому меня удивило такая возможность исправления методов компонент в рантайме.

А с проблемой я всё-таки справился. Правда активная запись меняется, но и в TDBLookupListBox она меняется тоже. Как по кнопкам вверх-вниз, пэйджап-пэйдж даун :)

Вопщем пасиба за помощью, в следующий раз постараюсь не задавать глупых вопросов.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.034 c
1-1121761002
Maniak48
2005-07-19 12:16
2005.08.07
Выделение слова в TWebbrowser по клику правой кнопкой мыши.


1-1121947361
chili
2005-07-21 16:02
2005.08.07
Возникла задача, нужно написать систему учета трафика...


14-1121765884
YurikGL
2005-07-19 13:38
2005.08.07
Хранение картинок в базе или в файле IB


14-1121750288
БарЛог
2005-07-19 09:18
2005.08.07
Помогите перевести порошок =)


1-1121941387
_Anton
2005-07-21 14:23
2005.08.07
Byte в OleVariant





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский