Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2016, 15:20   #1
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию DBGrid

Хочу чтобы поля в DBGrid растягивались вместе с формой нет не какого свойства ?? нужно ручками писать самому?
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 06.05.2016, 15:40   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
нужно ручками писать самому?
Ага. В OnResize формы по Columns грида.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.05.2016, 15:50   #3
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Код:
Procedure FormTableHight(var DBgridTaH:TDBGrid);
var i:byte;
    sum:Integer;
Begin
sum:=0;
For i:=0 to DBgridTaH.Columns.Count-1 do
  sum:=sum+DBgridTaH.Columns[i].Width;
sum:=DBgridTaH.Width-sum-40;
sum:=sum div DBgridTaH.Columns.Count;
For i:=0 to DBgridTaH.Columns.Count-1 do
  DBgridTaH.Columns[i].Width:=DBgridTaH.Columns[i].Width+sum-1;
end;
как то так?
или можно что нибудь симпатичней придумать?

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

у меня еще есть Splitter на какое событие посоветуете повесить чтоб и на него реагировала?
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 06.05.2016 в 15:59.
Dvoishnik вне форума Ответить с цитированием
Старый 06.05.2016, 15:58   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не помню - её ширина в ClientWidth попадает или нет. Проверь
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.05.2016, 16:19   #5
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

изменил
Код:
sum:=DBgridTaH.Width-sum-40;
на
Код:
sum:=DBgridTaH.ClientWidth-sum-13;
где 13 это фиксированный столбец(1 DBGrid).

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение

у меня еще есть Splitter на какое событие посоветуете повесить чтоб и на него реагировала?
было бы здорово если б подсказали, чет думать вообще не хочется((

повесил на
OnMoved

еще вопрос
как ограничить Splitter
у меня для DBgrid установлены минимальная ширина
а Splitter улетает под grid если его попробовать дернуть 2 раз (после достижения минимальной ширины)
собственно как от этого избавиться?
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 06.05.2016 в 16:44.
Dvoishnik вне форума Ответить с цитированием
Старый 06.05.2016, 17:11   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Допустим он горизонтальный
Splitter.MinSize:=100 - минимальная высота того, который alClient
У того, который, например, alTop ставь Constraints.MinHeight:=200 - это будет его минимальная высота. Но все равно возможны проколы, Splitter не до конца вылизан

Цитата:
на какое событие посоветуете повесить
OnMoved. В OnCanResize можно контролировать размеры
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 06.05.2016 в 17:20.
Аватар вне форума Ответить с цитированием
Старый 06.05.2016, 17:35   #7
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Код:
if Panel1.Constraints.MinWidth< NewSize then
 Accept:=false ;
все ровно все не очень гладко выходит.
позже залью фидос
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 06.05.2016, 20:51   #8
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
OnMoved. В OnCanResize можно контролировать размеры
Ширина на DbGrid можно автоматически так регулировать
Код:
   { Private declarations }
  public
     procedure MyGridSize(Grid: Tdbgrid);    // public процедура
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses UOrders;

{ TForm1 }


procedure TForm1.FormResize(Sender: TObject);
begin
  Form1.MyGridSize(DBGrid1);  // Вызиваем проседур  для   DBGrid1
end;

procedure TForm1.MyGridSize(Grid: Tdbgrid);
// Тела у этого процедур
const
  DEFBORDER = 10;
var
  temp, n: Integer;
  lmax: array [0..30] of Integer;
begin
  with Grid do
  begin
    Canvas.Font := Font;
    for n := 0 to Columns.Count - 1 do
      lmax[n] := Canvas.TextWidth(Fields[n].FieldName) + DEFBORDER;
    grid.DataSource.DataSet.First;
    while not grid.DataSource.DataSet.EOF do
    begin
      for n := 0 to Columns.Count - 1 do
      begin
        temp := Canvas.TextWidth(trim(Columns[n].Field.DisplayText)) + DEFBORDER;
        if temp > lmax[n] then lmax[n] := temp;
      end; {for}
      grid.DataSource.DataSet.Next;
    end;
    grid.DataSource.DataSet.First;
    for n := 0 to Columns.Count - 1 do
      if lmax[n] > 0 then
      Columns[n].Width := lmax[n];
  end;

end;

end.
Будеть хорошо если добавить "закладку" эту процедуру , если в таблице много записей что курсор не бегал когда проходить цикл
Код:
var  
    bm : TBookmark;   
begin
   bm := ADOQuery1.GetBookmark;   
   ADOQuery1.DisableControls;      
//--------------------------------------------------------------------//
   
   
//---------------------------------------------------------------------//
end;
    if  ADOQuery1.BookmarkValid(bm) then  ADOQuery1.GotoBookmark(bm);  
    if    ADOQuery1.BookmarkValid(bm) then  ADOQuery1.FreeBookmark(bm);  
    ADOQuery1.EnableControls;

Последний раз редактировалось xxbesoxx; 06.05.2016 в 21:03.
xxbesoxx вне форума Ответить с цитированием
Старый 10.05.2016, 10:39   #9
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Ширина на DbGrid можно автоматически так регулировать
Спасибо и вам, но мне немного другое нужно было уже решил, код выше.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление записи из одного DBGrid в другой DBGrid c помощью кнопки, а также удаление записи Evgen7 БД в Delphi 20 16.02.2014 17:05
перенос данных из dbgrid в dbgrid Obnx БД в Delphi 8 26.06.2013 22:38
из двух dbgrid в один dbgrid!!!! JunioR_BK БД в Delphi 0 23.05.2012 17:28
связь одной dbgrid c другой dbgrid anabenne БД в Delphi 3 17.10.2011 10:15
Перемещение даннах из dbgrid в dbgrid Hobbit_88 БД в Delphi 7 10.06.2009 13:33