Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DbGrid, Сохранение значений Ширины столбцов 
:(
    Опции темы
Loki3D
Дата 13.3.2006, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.3.2005

Репутация: нет
Всего: нет



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

Код

// в этой процедуре я читаю из ИНИ файла значения ширины
procedure TForm8.GridSizing ();
var
i:integer;
Begin
  config:=TIniFile.Create ('../files/config.ini');
  Form8.DBGrid1.Columns [0].Visible := false;
  For i:=1 to Form8.DBGrid1.FieldCount - 1 do
  begin
    // проверка наличия переменной  Col
    If Config.ValueExists ('F8','Col'+ IntToStr(i)) then
    begin
    Form8.DBGrid1.Columns [i].Width := StrToInt (Config.ReadString ('F8','Col'+ IntToStr(i),''));
    end;
  end;
end;

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

procedure TForm8.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
i: integer;
begin
  For i:=1 to Form8.DBGrid1.Columns.Count-1 do
  begin
    Config.WriteString ('F8','Col' + intToStr(i),IntToStr(Form8.DBGrid1.Columns[i].Width));
  end;
end;


собственон в этом то вся и проблема.
процедура записи новых значений Ширины стоит на событие рисования Ячейки, и вспринципе то все нормально.
Но стоит вызвать что то типа
Table.Active:= False; а потом
Table.Active:= true;
то Сетка рисуется заново и сохраняются значения ширины.. соответсвующие Длинне поля в Таблице БД.

Вощем я Уперся В Алгоритм.
А вопросы у меня такие.
Как можно сделать вызов процедуры на изменение ширины столбца а не на прорисовку ячейки, такого события у DbGrid нету, может посоветуете др. компонент?
Или такое событие можно Самому написать отредактировав Стандартный Компонент (В этом отношении я вообще знаниями не обладаю), поэтому хотел бы знать, стоит ли в это погружаться?

PM MAIL   Вверх
_hunter
Дата 13.3.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



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


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Loki3D
Дата 13.3.2006, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.3.2005

Репутация: нет
Всего: нет



у меня в Grid Может открываться Таблица с разным количеством Столбцов.
Я вот хочу чтобы пользователь, если и работает с одной таблицей, то имел возможность настроить ширину, Так чтоб она запомнилась и при последующей загрузке, повторно настраивать не приходилось.

Так же у меня есть в программе событя которые временно закрывают набор данных.. а потом открывают его снова.
вот именно при этом и получается, что в ИНИ записывается Ширина, соответсвующая длинне поля в БД тк Сетка начинает рисоваться заново. а на это событие у меня повешана Запись параметров Сетки в ИНИ.

я то собственно хочу узнать.. есть ли компонент Сетки, в котором есть событие на изменение ширины столбца?
или Если это не сложно, то как самому изменить Компонент TDbGrid чтобы в нем было такое событие?

PM MAIL   Вверх
_hunter
Дата 13.3.2006, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



всеравно нихт не понял.
ну несколько таблиц есть и что? всеравно где-то они активируются/деактивируются. в этих местах и сохраняй значения.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Foley
Дата 14.3.2006, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фсемба Яцца
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 31.1.2006
Где: Россия, Арх.обл

Репутация: 2
Всего: 7



сделай чтоб в ини записывалось имя таблицы и соответственно настройки грида для этой таблицы. а сохраняй
Цитата(_hunter @ 13.3.2006, 19:04 Найти цитируемый пост)
где

Цитата(_hunter @ 13.3.2006, 19:04 Найти цитируемый пост)
они активируются/деактивируются


PM MAIL ICQ   Вверх
Loki3D
Дата 19.3.2006, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.3.2005

Репутация: нет
Всего: нет



короче решил проблему тупо и не интересно..
везде где возможно поставил Процедуру сохранения параметров Сетки..
и после каждого события по обновлению.. вставил процедуру считывания параметров.

от идеи сохранения значений столбцов во время рисования Ячеек или рисования Данных, пришлось отказаться

всем большое спасибо за желание помоч
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1144 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.