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

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

Позиционирование в DBGrid после Insert [D6, IB6.x]


Страницы:   1 2 3

Pike ©   (2002-04-04 23:49:00) 

Хотелось бы узнать, как решают эту проблему другие.
Проблема в том, что при добавлении новой записи в TQuery, DBGrid не корректно отображает последовательность записей, пока не переоткроешь TQuery. В свое время я решил эту проблему с помощью обработчиков событий BeforePost и AfterPost. Но до сих пор остаюсь неудовлетворенным – люблю изящные решения. А тут еще столкнулся с похожей проблемой у TIBQuery. Может есть более красивые решения, возможно я чего-то не допонимаю в этих Query? А может существуют более проработанные Query-компоненты? Подскажите, плиз.


Pike   (2002-04-11 17:01:00) [21]

Попробовал - увидел.
1. Удаление этой блямбы - это все, что дает регистрация?
2. Этично ли давать информацию в форуме о том как удалить ее, если знаешь как? Я все же уважаю труд наших россейских прогромистов и их желание получать за свой труд.


Alexandr   (2002-04-10 12:42:00) [22]

1) А ты запусти скомпилированную программу с FIBPlus 4.6 отдельно, без дельфи- увидишь
2) на fibplus.com.ua плохо искал :) там и статьи есть и примеры


Pike   (2002-04-10 12:36:00) [23]

На fibplus.com.ua никакого описания (как с ним работать, а не его достоинства) что-то я не обнаружил. Или его надо покупать?

Пардон, что есть "сплаш без ИДЕ"?


Slava   (2002-04-09 09:10:00) [24]

> Alexandr ©

А я и не спорю.

Вот только "сплаш без ИДЕ" для меня было, прямо скажу, неприятной неожиданностью, т.к. сервисы всякие понаписаны и т.д.

Пришлось пока остаться на предыдущей версии. Если в новых версиях будет чего особо замечательного, то куплю.

FIBPlus, имхо, лучшая библиотека для IB.


Alexandr   (2002-04-09 09:04:00) [25]

необязательно, если сплаш без ИДЕ пока не мешает...

да и 15$ за такой продукт это мало.
И вообще 15$ это подписка на новые версии на год, захочешь в следующем году опять новые версии получать - еще 10$ в год.

По-моему это копейки, по сравнению с тем, что эта библиотека дает.


Slava   (2002-04-09 08:38:00) [26]

И $15 приготовьте...


Alexandr   (2002-04-09 06:48:00) [27]

про FIBPlus читайте на
fibplus.com.ua


Pike   (2002-04-08 23:21:00) [28]

dymka
> Правда тут нет проверки на инсерт...
В этом все и дело!!
А с букмарками, на мой взгляд, далеко не изящное решение. Весь этот огород придется городить каждый раз, как понадобится работать с таблицей. Думаю красота решения состоит не только в краткости кода, но и в легкости работы с ним. В моем случае, эти процедуры просто подставляешь в события, даже не генеря обработчики событий.


Pike   (2002-04-08 22:39:00) [29]

Есть ли где-нибудь толковое описание к FIBPlus? Желательно бы на русском. Help уж больно краток.

А это я состряпал на заре моего знакомства с Delphi, кажется тогда это был D2. С букмарками тогда не получилось, почему уже не помню. Так с тех пор и пользовался, не заглядывая.


Shirson   (2002-04-08 09:08:00) [30]

Я это делал букмарками. Просто и работает без проблем.

var
saveplace:tbookmark;

begin
SavePlace:=Query1.GetBookmark;
... //insert-edit-delete here
Query1.GotoBookmark(SavePlace);
Query1.FreeBookmark(SavePlace);


dymka   (2002-04-08 07:44:00) [31]

2Pike: Что-то сложно, можно чуток проще
Зачем в цикле искать значение если для этого есть метод Locate?
Значения типа FindValues можно получать в событие BeforePost например...

procedure TForm1.Query1AfterPost(DataSet: TDataSet);
begin
DataSet.Close;
DataSet.Open;
DataSet.Locate(KeyFields, KeyValues, []);
end;

Правда тут нет проверки на инсерт...


Pike   (2002-04-07 23:37:00) [32]

Извиняюсь - не ясно выразился.


Вольный Стрелок   (2002-04-07 21:51:00) [33]

2 Pike
> не корректно отображает последовательность записей, пока
> не переоткроешь TQuery. В свое время я решил эту проблему
> с помощью обработчиков событий BeforePost и AfterPost.
ИМХО, в этом комментарии говорится, что решено БЕЗ переоткрытия, а приведенный код говорит об обратном.
С переоткрытием-то все ясно, хотелось без него и в БДЕ.


Pike   (2002-04-06 22:50:00) [34]

procedure TdmXXXX.AfterPostID(DataSet: TDataSet);
var
FindValue: Variant;
Query: TQuery;
Field: TField;
begin
Field := DataSet.FieldByName("ID");
if (DataSet.Tag = 1) then begin
DataSet.Tag := 0;
FindValue := Field.Value;
with DataSet do begin
DisableControls;
Close;
Open;
First;
while not EOF do begin
if (Field.Value = FindValue) then Break;
Next;
end;
EnableControls;
end;
end;
end;

procedure TdmXXXX.BeforePostID(DataSet: TDataSet);
begin
if (DataSet.State = dsInsert) then DataSet.Tag := 1;
end;

Как раз хорошо работает с BDE.

Спасибо за FIBPlus!!!!!


Вольный Стрелок   (2002-04-06 15:50:00) [35]

2 Pike
Поделись решением с BeforePost/AfterPost

2 Alexandr
а со стандартными компонентами (через БДЕ)?


dymka   (2002-04-05 18:51:00) [36]

http://www.fibplus.com.ua/rus


Pike   (2002-04-05 17:52:00) [37]

Опять FIBPlus. Так где же его можно надыбать?


Johnmen   (2002-04-05 17:41:00) [38]

>>>Кстати, посоветуй хороший набор компонентов для работы с БД.

FIBPlus...


Pike   (2002-04-05 17:38:00) [39]

Кстати, посоветуй хороший набор компонентов для работы с БД.


Pike   (2002-04-05 17:35:00) [40]

Спасибо, Alexandr. Где его можно взять?


Страницы:   1 2 3

Наверх

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