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

Вниз

ValueListEditor + Toolbar   Найти похожие ветки 

 
anatolyk   (2003-06-28 23:24) [0]

Привет всем! Помогите с такой проблемой:
На форме есть:
1. AdoQuery1, AdoQuery2 c Datasourc-ами;
2. ValueListEditor, Key=Имя поля , Value=Значение поля (из ADOQuery1);
3. DBGrid для AdoQuery2;
4. На главной форме - Toolbar с кнопками для управления Dataset (стандартные Actions из ActionList);

Вопрос : как заставить реагировать Toolbar на AdoQuery1, запись которого редактируется в ValueLisEditor-e?


 
Тих   (2003-06-28 23:36) [1]

В шмышле? Подцепиться к событиям AdoQuery на изменение поля?
OnWillChangeField.


 
anatolyk   (2003-06-28 23:47) [2]

Да.
OnWillChangeField - что там надо вставить (в кратце)? По хэлпу я чего-то не понял. 8(


 
Тих   (2003-06-28 23:59) [3]

Occurs before a field is changed. =)

Т.е. возбуждается перед тем, как будет изменено значение поля. Переменной EventStatus: TEventStatus можно рулить этим процессом, например, проверить введенные данные, и, если они некорректные, выказать сообщение об ошибке, сделать недоступной кнопку в тулбаре :) и установить ее в esCancel - и тогда значение в рекордсете изменено не будет. Вроде так.
Я 6 и 7 версию еще в глаза не видел, потому не знаю, что такое стандартные Actions...


 
anatolyk   (2003-06-29 00:11) [4]

Смысел понял (примерно). Но с ValueList-ом я работаю так:
сначала типа считываю названия полей и их значения и заношу в список:

While ValueListEditor1.RowCount > 0 do ValueListEditor1.DeleteRow(1);
for i:=0 to AdoQuery1.Fields.Count - 1 do begin
with AdoQuery1 do begin
if Fields[i].Value <> null then
ValueListEditor1.InsertRow(Fields[i].DisplayName,Fields[i].Value,True)
else
ValueListEditor1.InsertRow(Fields[i].DisplayName,"",True);
end
end;

потом заношу значения обратно в поля:
procedure TForm2.ADOQuery1BeforePost(DataSet: TDataSet);
var
i,r: integer;
f: boolean;
begin
AdoQuery1.Edit;
for i:=0 to AdoQuery1.Fields.Count - 1 do begin
with AdoQuery1 do begin
f:=ValueListEditor1.FindRow(Fields[i].DisplayName,r);
try
if ValueListEditor1.Values[Fields[i].DisplayName] = "" then
Fields[i].Value := null
else
Fields[i].Value := ValueListEditor1.Values[Fields[i].DisplayName];
except
end;
end
end;
end;

Ответ: Стандартные Actions - от DatasetFirst,Prior до DatasetPost,Cancel (как в нафигаторе) и далее, в том числе кое-что для ChildDataset.


 
Тих   (2003-06-29 00:27) [5]

Если надо енаблить/дизаблить кнопки навигации,
то - проверяйте состояние датасета в обработчике AfterScroll
tbPrior.Enabled := not AdoQuery.BOF;
tbLast.Enabled := not AdoQuery.EOF и т.п.


 
anatolyk   (2003-06-29 00:52) [6]

Кстати, если на форму бросить Нафигатор, то все работает.


 
anatolyk   (2003-06-29 00:56) [7]

tbPrior.Enabled := not AdoQuery.BOF;
tbLast.Enabled := not AdoQuery.EOF работает, но Action не отрабатывает: кнопку давишь - 0 эмоций.



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

Форум: "Основная";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
1-31277
Rawman
2003-06-26 13:10
2003.07.10
Динамический массив компонентов


6-31382
Zelius
2003-04-29 17:28
2003.07.10
Можно ли заставить TIdTCPConnection сообщать о приходе данных?


1-31348
Vint_XXX
2003-06-27 10:29
2003.07.10
ListView


1-31196
SEYD
2003-06-28 14:00
2003.07.10
Зацикливание классов


14-31497
aves
2003-06-24 01:44
2003.07.10
Как программно изм-ть RUS версию Windows на ENG и наоборот





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