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

Вниз

Создание столбцов в DBGrid в рантайме   Найти похожие ветки 

 
Conder   (2003-02-21 16:45) [0]

Имеется ADOQuery SQL-значение которого меняется в рантайме. Для того чтобы осуществлять сортировку при клике на заголовке есть следующий код:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
ADOQuery1.Close;
ADOQuery1.DisableControls;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:=SQL_text+" order by "+ Column.FieldName;
Memo1.Lines.Text:=ADOQuery1.SQL.Text;
DBGrid1.Columns.RestoreDefaults;
Column.Title.Font.Color := clBlue; <-- здесь вылетает ошибка
ADOQuery1.EnableControls;
ADOQuery1.ExecSQL;
end;
Проблема оказалась в столбцах сетки. Пытаюсь создать в рантайме
procedure TForm1.BitBtn1Click(Sender: TObject);
var i:integer;
begin
s:=TStringList.Create;
try
ADOQuery1.GetFieldNames(s);
for i:=0 to S.Count-1 do
begin
DBGrid1.Columns.Items[i].FieldName:=s[i];
DBGrid1.Columns.Items[i].FieldName:=s[i];
end;
finally
s.Free;
end;
ADOQuery1.Open;
end;
- при щелчке на заголовке в гриде ничего не отображается
чем лечить?


 
Соловьев   (2003-02-21 16:48) [1]


> Column.Title.Font.Color := clBlue; <-- здесь вылетает ошибка
>

Вообще-то нужно указать владельца Column...


 
sniknik   (2003-02-21 17:36) [2]

не там проблему ищеш.

достаточно следующего кода.

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
ADOQuery1.Sort:= Column.FieldName;
DBGrid1.Columns.RestoreDefaults;
Column.Title.Font.Color:= clBlue;
end;

+ проверки на открытость датасета и т.д. если хочется.
(вылетает потому что рекордсет закрыт поля не уже не существуют ссылка по Column хрен знает куда указывает)


 
sniknik   (2003-02-21 17:41) [3]

ошибся на пустую структуру кажет (значит ресторедефаулт с пустой не работает), ну можно тогда добавить и без всяких проверок обойтись

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
if Column.FieldName = "" then exit;
ADODataSet1.Sort:= Column.FieldName;
DBGrid1.Columns.RestoreDefaults;
Column.Title.Font.Color:= clBlue;
end;


 
Johnmen   (2003-02-22 00:04) [4]

1. DBGrid1.Columns.RestoreDefaults; по-моему, лишнее...
2. if Column.Field = nil then exit;


 
sniknik   (2003-02-22 01:34) [5]

1 не лишнее. но поменять на чтонибудь типа
for i:= 0 to DBGrid1.Columns.Count-1 do DBGrid1.Columns[i].Title.Font.Color:= clBlack;
не помешает.

2 да, так лутше.


 
Johnmen   (2003-02-22 01:45) [6]

>sniknik © (22.02.03 01:34)

Ну не понимаю я смысла применения ни DBGrid1.Columns.RestoreDefaults; ни приведенного тобой...
:)))


 
sniknik   (2003-02-22 01:51) [7]

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


 
Johnmen   (2003-02-22 02:02) [8]

Да. Что-то не вполне был внимателен к вопросу...:)


 
Conder   (2003-02-24 11:34) [9]

Спасибо джентльмены!
Код by sniknik круто подмогнул... Все работает и с RestoreDefaults и без добавления колонок в рантайме.
Еще раз спасибо



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

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

Наверх




Память: 0.46 MB
Время: 0.008 c
1-54056
Андрусь
2003-03-03 19:24
2003.03.17
переименовать файл не нарушив блокировки


3-53898
Ренат
2003-02-25 13:54
2003.03.17
Обновление VIEW в Interbase


3-53886
Roma111111
2003-02-20 14:23
2003.03.17
Какие записи блокированы?


14-54183
Supreme 2
2003-03-01 01:56
2003.03.17
Нужна компанента, которая будет плавно менять картинку на другую.


1-54086
Nehto
2003-03-05 15:15
2003.03.17
Obrabotka SCV-fila





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