Конференция "Начинающим" » Выравнивание по столбцам TDBGrid [D7, 2003]
 
  • lewka © (18.10.17 14:24) [0]
    Здравствуйте!
    Делаю фильтр для таблицы БД
    Выравниваю TPanel по столбцам TDBGridEh вот таким способом

    n_p:=0;
    panel_l_sum:=0;
    try
     for i1:=0 to fmplangraf.ComponentCount-1 do
      begin
       if (fmplangraf.Components[i1] is TPanel) then
        begin
        //(fmplangraf.Components[i1] as TPanel).Parent:=ScrollBox1;
        (fmplangraf.Components[i1] as TPanel).BorderStyle:=bsNone;
        (fmplangraf.Components[i1] as TPanel).Top:=12;
        (fmplangraf.Components[i1] as TPanel).Width:=DBGridEh1.Columns[n_p].Width;
         n_p:=n_p+1;
        (fmplangraf.Components[i1] as TPanel).Left:=panel_l_sum+14-ScrollBox1.HorzScrollBar.Position;
         panel_l_sum:=panel_l_sum+(fmplangraf.Components[i1] as TPanel).Width;
        (fmplangraf.Components[i1] as TPanel).Caption:='left='+inttostr((fmplangraf.Components[i1] as TPanel).Left)+' Width='+inttostr((fmplangraf.Components[i1] as TPanel).Width)
        end;
      end;
     DBGridEh1.Width:=panel_l_sum+38;
     except
      end;


    Но выравнивание происходит только для первого столбца, а остальные понемногу сдвигаются, и чем дальше столбец, тем больше сдвиг. На скриншоте показал для примера
    http://prntscr.com/gyw65w

    Подскажите, как выравнивать равно по всем столбцам
  • rrrrrrr © (18.10.17 14:28) [1]
    ты серьезно?
  • lewka © (18.10.17 14:41) [2]

    > ты серьезно?

    Конечно
  • KilkennyCat © (18.10.17 15:08) [3]
    ужасный код.
    но я подскажу
    panel_l_sum:=panel_l_sum+(fmplangraf.Components[i1] as TPanel).Width + 1;
  • lewka © (18.10.17 15:35) [4]
    спс. Сам бы не догадался:))))
 
Конференция "Начинающим" » Выравнивание по столбцам TDBGrid [D7, 2003]
Есть новые Нет новых   [118650   +5][b:0][p:0.001]