Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 DBGrid как отловить событие расширения колонки  [new]
woojin
Member

Откуда:
Сообщений: 96
добрейшего вечерка форумчане!

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

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

перед вводом заголовка (Caption) ширина столбца 20, после уже 538
wb:=dbg.Columns[0].Width;    // ----->ширина 20
  dbg.Columns[0].Title.Caption := 'длинная строка которую надо уместить в ширину столбца без его увеличения после ввода этой строки';
  wa:=dbg.Columns[0].Width;    // ----->ширина 538

пробовал отладчиком пройтись по коду
unit Data.DB;

.....................................................

procedure TField.SetDisplayLabel(Value: string);
begin
  if Value = FFieldName then Value := '';
  if FDisplayLabel <> Value then
  begin    // -----> здесь ещё 20
    FDisplaylabel := Value;    // -----> с этой строки перепрыгивает в модуль System
    PropertyChanged(True);    // -----> а тут уже 538
  end;
end;


unit System;

.....................................................

procedure _UStrAsg(var Dest: UnicodeString; const Source: UnicodeString); // globals (need copy)
{$IFDEF PUREPASCAL}

.....................................................

{$ELSE !PUREPASCAL}
{$IFDEF CPUX86}
asm

.....................................................

@@2:    XCHG    EDX,[EAX]    // -----> до этой строчки ширина столбца ещё 20, а после уже 538 
        TEST    EDX,EDX
        JE      @@3
        MOV     ECX,[EDX-skew].StrRec.refCnt
        DEC     ECX
        JL      @@3

.....................................................

end;
{$ENDIF CPUX86}
{$ENDIF !PUREPASCAL}


подскажите каким образом отловить расширение столбца при вводе длинного названия
31 янв 20, 18:52    [22070495]     Ответить | Цитировать Сообщить модератору
 Re: DBGrid как отловить событие расширения колонки  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 896
http://delphikingdom.com/asp/viewitem.asp?catalogid=667
31 янв 20, 19:16    [22070512]     Ответить | Цитировать Сообщить модератору
 Re: DBGrid как отловить событие расширения колонки  [new]
woojin
Member

Откуда:
Сообщений: 96
там много интересного написано, но ответа на свой вопрос я так и не нашёл(((
ни сообщения указывающего на действие ни самого действия

можете пояснить?
31 янв 20, 20:06    [22070550]     Ответить | Цитировать Сообщить модератору
 Re: DBGrid как отловить событие расширения колонки  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11498
Смотрите, что вызывается здесь
woojin
PropertyChanged(True);
может какой-то обработчик OnChange найдете
1 фев 20, 17:35    [22070852]     Ответить | Цитировать Сообщить модератору
 Re: DBGrid как отловить событие расширения колонки  [new]
V.Borzov
Member

Откуда: Саратов
Сообщений: 312
В потомках TCustomGrid для отслеживания изменения ширины колонок можно переопределять ColWidthsChanged, используя override, она динамическая.
1 фев 20, 18:00    [22070860]     Ответить | Цитировать Сообщить модератору
 Re: DBGrid как отловить событие расширения колонки  [new]
woojin
Member

Откуда:
Сообщений: 96
V.Borzov
В потомках TCustomGrid для отслеживания изменения ширины колонок можно переопределять ColWidthsChanged, используя override, она динамическая.


было бы не плохо, если бы не одно НО, в эту процедуру уже приходят данные о увеличенном размере

видимо надо как то запомнить размер до увеличения и уже вернуть его обратно после увеличения
2 фев 20, 09:59    [22071031]     Ответить | Цитировать Сообщить модератору
 Re: DBGrid как отловить событие расширения колонки  [new]
Vlad F
Member

Откуда:
Сообщений: 1112
woojin,

Запоминай в предыдущем вызове этого же события.
2 фев 20, 10:44    [22071041]     Ответить | Цитировать Сообщить модератору
 Re: DBGrid как отловить событие расширения колонки  [new]
woojin
Member

Откуда:
Сообщений: 96
всем спасибо!
пока искал решение наткнулся на очень хороший компонент SMDBGrid
в нём оказалось всё как мне надо))
7 фев 20, 11:19    [22075425]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить