-
> Предаставляй TStringGrid, у которого есть шапка, слева ничё > нету.
Это TStringGrid и есть, и в дизайнере колонки двигаются.
-
ну это понятно. Так как в дизайн тайм обрабатывать?
-
Находим подходящий компонент, с походими действиями и смотрим реализацию. Например TCustomGrid Смотрим procedure CMDesignHitTest(var Msg: TCMDesignHitTest); message CM_DESIGNHITTEST; procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
-
Вот вернулся к давнишней проблеме... воз и ныне там...
Никак я не найду константу, которая "говорит" моему компоненту: "Отлавливай и обрабатывай мышиные сообщения так же, как отлавливаешь в рантайм!"
Смотрел даже исходники TCustomGrid... Чё то не очень...
Ну так что за константа?
P.S. Заметил, чтобы компонент стандартно обрабатывался в дизайн тайм, достаточно присвоить константу HTCLIENT
-
DevilDevil © (13.09.06 17:31) [23] Смотрел даже исходники TCustomGrid... Чё то не очень обратись к окулисту. Тебе русским языком сказали: DimaBr (28.07.06 13:16) [22] Находим подходящий компонент, с походими действиями и смотрим реализацию. Например TCustomGrid Смотрим procedure CMDesignHitTest(var Msg: TCMDesignHitTest); message CM_DESIGNHITTEST;
-
procedure TMyComponent.CMDesignHitTest(var Msg: TCMDesignHitTest);
begin
Msg.Result := 1; end;
для грида написано вот так, то есть реагировать только тогда, когда фунцкия Sizing возвращает TRUE
procedure TCustomGrid.CMDesignHitTest(var Msg: TCMDesignHitTest);
begin
Msg.Result := Longint(BOOL(Sizing(Msg.Pos.X, Msg.Pos.Y)));
end;
-
DimaBr (14.09.06 09:33) [25]
procedure TMyComponent.CMDesignHitTest(var Msg: TCMDesignHitTest);
begin
Msg.Result := 1; end; Error:
Cannot focus a disabled or invisible window. _____ | Ok |
-
Эксперименты с перехватом WM_NCHITTEST желаемого результата не дали
-
Ну так проверьте, может не здесь ошибка.
-
> DimaBr (14.09.06 16:15) [28] > Ну так проверьте, может не здесь ошибка.
Что то я не очень понял. Где проверить?
Если использовать предложенный Вами вариант, то при нажатии кнопки мыши над компонентом (когда компоненту даётся фокус) возникает вышеуказанная ошибка. В РанТайм всё естественно работает корректно.
-
Предаставляй TStringGrid, у которого есть шапка, слева ничё нету. StringGrid.FixedCols := 0;
Возьмите за основу CustomGrid и творите что хотите. Не можите самостоятельно реализовать движение колонок - скопируйте файл Grids в свою папочку, переименуйте, и выкидывайте потихоньку всё лишнее.
-
> DimaBr (15.09.06 15:29) [30]
Работа над таблицей длится уже 2 месяца, отличия от стандартной существенны. Собственно и ушли от стандартов по этой причине. Есть некоторые ограничения по скорости и занимаемой оперативной памяти. К тому же всё, что написано, написано на Си. Переписывать всё на Delphi или ещё хуже переписывать с начала - естественно нецелесообразно. Поэтому я и задал на форуме элементарный вопрос, который почему то не получается решить уже 1.5 месяца
В общем, если кто то уже сталкивался с подобной проблемой, буду рад помощи
-
мда... поколение младое... краткое содержание ветки: "вот в стандартном гриде работает. а у меня нет. читать не умею, потому исходник стандартного грида не предлагать!"
ужос...
-
Зануда! см [25] - [26]
-
Глянь в Help'e TControlStyle = csDesignInteractive + csClickEvents Может оно?
-
> DevilDevil ©
Заглятите в почту.
-
Во первых, я избавился от злостной ошибки при клике мышкой. По событию OnMouseDown происходил метод SetFocus , который я переопределил: if not(csDesigning in ComponentState) then inherited ; Во вторых, удалось реализовать нормальное изменение размеров столбцов. DimaBr, большое спасибо за пример! Сейчас размышляю, как реализовать сохранение этой ширины в *dfm файле
-
> DevilDevil © (21.09.06 15:34) [36]
А теперь внимательно прочтите [28]
-
>[37] DimaBr 22-Sep-XLI A.S., 08:47 >А теперь внимательно прочтите [28] совершенно бессмысленно. адепты Ф. читают с трудом, и то только откровения кумира.
-
> ейчас размышляю, как реализовать сохранение этой ширины > в *dfm файле
Если ваши колонки элементы коллекции, то ширину в published и колекцию в published, иначе
procedure DefineProperties( Filer: TFiler );override;
procedure ReadMyProperty( Reader: TReader );
procedure WriteMyProperty( Writer: TWriter );
|