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

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

Помогите с DBGrid! [D5, Paradox]


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

alexander_ua ©   (2003-01-17 15:22:00) 

В гриде помещаются не все поля. При использовании прокрутки (горизонтальной) после переоткрытия Query (close-open) полосы прокрутки возвращаются в прежнее положение. Т.е. например у меня есть 10 полей, в видимой области грида - поля 1-6. Делаю прокрутку, чтобы видеть поля 4-9. После переоткрытия датасета снова вижу поля 1-6, а нужно ведь 4-9!!!
Извиняюсь за настырность, вопрос уже задавал, но так и не получил вразумительного ответа.


pivo_est   (2003-01-21 02:36:00) [1]



> вобщем так. с помощью DBGrid1DrawColumnCell я выловил поле,
> которое первым отображается в гриде до обновления. Остается
> узнать как после обновления сразу же перейти к этому полю.
> Сразу же говорю, что RowSelect включена и SelectedFields
> (SelectedIndex) неприменимы.


Может поможет:
procedure TForm1.Button1Click(Sender: TObject);
var j,c: integer;
begin
c:=0;
for j:=0 to T1.FieldCount-1 do
begin
if T1.Fields[j].FieldName=Edit1.text then
DG1.SelectedIndex:=c;
c:=c+1;
end;

end;

Здесь в Edit1 имя поля.
Поле появляется в области видимости.
Необязательно крайнелевым.


Романов Р.В.   (2003-01-20 22:39:00) [2]

Да нормальный компонент, если с ним сильно не выпендривться


MsGuns   (2003-01-20 21:43:00) [3]

>Mike Kouzmine (20.01.03 19:47)
>MsGunsу - в другой ветке я об этом уже читал и попросил Вас описать баги, чтобы проверить и сделать адекватный выбор, пока весь проект не перевел на этот грид

К сожалению, было это давненько (летом-ранней осенью) и я не фиксировал все на бумаге. Но на память:

1. Кое-какие события и методы предковых классов там переопределены так, что когда хочешь ими возпользоваться, то получаешь отлуп по полной программе.
2. Если ставишь обработчики на связанный с гридом датасорс или датасет, то в отладке замучаешься жать баттоны, прогоняя многочисленные обработчики "собственоого гридошного приготовления". Кроме того, у меня были ситуации банального зависания компа (особенно на обработчике типа OnDataChange).
3.При переупорядочениях записей так и не врубился как он это делает, но как минимум в 50% случаев или не сортирует воообще или сортирует не так.
4.Крайне неудобная работа со списками помеченных строк (через Ж)
5.И так далее.

Оговорюсь сразу. Это МОЕ ЛИЧНОЕ мнение, основанное к тому же на НЕПРОДОЛЖИТЕЛЬНОЙ работе с этим компонентом. Все, что мне надо делать с гридом (раскраска, контролы в ячейках, отображение мемо, реакция на срабатывания клика на заголовках и т.д.) я делаю, используя методы и свойства стандартного DBGrid`а. НИ РАЗУ машина не зависала по его причине.

И еще раз: Все сказанное-однозначно ИМХО.


Mike Kouzmine   (2003-01-20 19:56:00) [4]

Все правильно, хреново.
Единственно что надо запомнить перед переоткрытием datasetа - ключевые поля и SelectedField, потом находишь запись, устанавливаешь SelectedField и все (ну кроме того, что запись будет в центре грида или в самом верху, не помню), но это, как пишут в книгах, совсем другая история.


Delirium^.Tremens   (2003-01-20 19:52:00) [5]

Mike Kouzmine (20.01.03 19:47)
И что это еще за "милок", ты часом не из этих...?


Delirium^.Tremens   (2003-01-20 19:49:00) [6]

Mike Kouzmine (20.01.03 19:47)
Хреново читаешь.


Mike Kouzmine   (2003-01-20 19:47:00) [7]

Delirium^.Tremens © Милок, чукча не читатель, чукча писатель :)
Читали, и сошлись на том, что SelectedIndex = 0, как этого избежать? Сделать как написано в моем посте. Хотя, может я все таки чукча?
MsGunsу - в другой ветке я об этом уже читал и попросил Вас описать баги, чтобы проверить и сделать адекватный выбор, пока весь проект не перевел на этот грид


Delirium^.Tremens   (2003-01-20 19:17:00) [8]

Mike Kouzmine (20.01.03 19:05)
Перед постом, читай ветку.


MsGuns   (2003-01-20 19:11:00) [9]

>Mike Kouzmine (20.01.03 19:05)
>Используй дбгридэх, ставь в опшонсэх выделение строки, а грид в ридонли, будет тебе и выделение строки и перемещение по столбцам.

... и куча траблов, если вздумаешь поиграться с некоторыми событиями, например, датасорса. Да и не только...


Mike Kouzmine   (2003-01-20 19:05:00) [10]

Используй дбгридэх, ставь в опшонсэх выделение строки, а грид в ридонли, будет тебе и выделение строки и перемещение по столбцам.


MsGuns   (2003-01-20 18:46:00) [11]

>alexander_ua (20.01.03 18:36)
>Reindeer Moss Eater (20.01.03 18:14)

>ну тогда научи пожалуйста

Статья "Полосатый грид" в Королевстве

Блин, пора уже подобные темы фильтровать в отдельный отстойник. Это даже не FAQ, а какой-то VVVFAQ (Vary-vary-vary) 8))


alexander_ua   (2003-01-20 18:36:00) [12]

Reindeer Moss Eater (20.01.03 18:14)

ну тогда научи пожалуйста
и извини за настырность


Reindeer Moss Eater   (2003-01-20 18:14:00) [13]

Дай угадаю, ты про цвет что ли?
Да. Изврат со скролингом и прочие премудрости конечно более просты, чем своя отрисовка "шпалы".
Ну удачи тебе тогда.


alexander_ua   (2003-01-20 18:11:00) [14]

Reindeer Moss Eater (20.01.03 17:10)

эстетическое удовольствие приносит...


Reindeer Moss Eater   (2003-01-20 17:10:00) [15]

А чем таким волшебным отличается "выделенная" RowSelect"ом запись от просто текущей?


alexander_ua   (2003-01-20 17:03:00) [16]

Reindeer Moss Eater (20.01.03 16:04)

Записи то останутся на месте, а выделить запись не смогу, смогу только поле (ячейку), а это и есть бэд.


Романов Р.В.   (2003-01-20 16:05:00) [17]


> alexander_ua (20.01.03 14:28)
> TTCustomDelphiMaster © (17.01.03 21:38)
>
> У dbgrid нет свойства LeftCol :).


Есть только оно Protected.
Как до него добраться смотри здесь
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1042818718&n=1


Reindeer Moss Eater   (2003-01-20 16:04:00) [18]

Не знаю, что ты там понял, но все записи останутся там, где и были до этого.


alexander_ua   (2003-01-20 15:51:00) [19]

если я правильно понял, таким образом я буду лишен возможности лицезреть выделенную запись, да? Ведь именно для этого у меня и был RowSelect. Выделенным может быть только поле.


Reindeer Moss Eater   (2003-01-20 15:45:00) [20]

Я так понял, что RowSelect у тебя только для того, что бы пользователь не редактировал данные в гриде?

1. Убираем из опций RowSelect.
2. DBGrid1.ReadOnly:=True;
3. Убираем из опций dgEditing и dgAlwaysShowEditor

4. Начинаем иметь возможность использовать SelectedIndex


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

Наверх

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