Форум: "Основная";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];
ВнизКак вставить компонент DateTimePicker в ячейку таблицы StringGrid Найти похожие ветки
← →
r900 (2003-07-02 11:48) [0]Как вставить компонент DateTimePicker в ячейку таблицы StringGrid?
Если использовать процедуру:
procedure TForm11.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if (arow<>0) and (acol=1) then
begin
DateTimePicker1.Left:=StringGrid1.LeftCol+StringGrid1.DefaultColWidth+3;
DateTimePicker1.Top:=arow*(StringGrid1.DefaultRowHeight+1);
DateTimePicker1.Width:=StringGrid1.DefaultColWidth;
DateTimePicker1.Enabled:=true;
DateTimePicker1.Visible:=true;
end;
end;
, то вроде получается. Но когда появляется полоса прокрутки,т.к. строк может быть много ,то такой фокус не проходит?
← →
clickmaker (2003-07-02 11:51) [1]DateTimePicker1.Parent := StringGrid1
← →
Семен Сорокин (2003-07-02 11:59) [2]обрабатывай сообщения от scroll"а - смещай как надо
← →
r900 (2003-07-02 12:25) [3]А какое сообщение от scroll"а у StringGrid1, чего-то не нашел?. Может можно пример? А насчет DateTimePicker1.Parent := StringGrid1 куда вставить чтобы работалв том числе и с прокруткой?
← →
Семен Сорокин (2003-07-02 12:30) [4]ты прав у StringGrid"а нет, придется делать наследника? наподобие:
type
TScrollDirect = (sdVert, sdHorz);
TScrollEvent = procedure (Sender: TScrollBox; Direct: TScrollDirect; Position: integer) of object;
TScrBox = class(TScrollBox)
private
FOnScroll: TScrollEvent;
procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
procedure WMNCHitTest(var Message: TMessage); message WM_NCHITTEST;
published
property OnScroll: TScrollEvent read FOnScroll write FOnScroll;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("Samples", [TScrBox]);
end;
{ ------------------------------- TScrBox ------------------------------------ }
procedure TScrBox.WMHScroll(var Message: TWMHScroll);
begin
inherited;
if Assigned(FOnScroll) then
FOnScroll(TScrollBox(Self), sdHorz, HorzScrollBar.Position)
end;
procedure TScrBox.WMNCHitTest(var Message: TMessage);
begin
DefaultHandler(Message)
end;
procedure TScrBox.WMVScroll(var Message: TWMVScroll);
begin
inherited;
if Assigned(FOnScroll) then
FOnScroll(TScrollBox(Self), sdVert, VertScrollBar.Position)
end;
← →
Song (2003-07-02 12:50) [5]2r900 (02.07.03 12:25)
TStringGrid.onLeftTopChanged
← →
r900 (2003-07-02 13:45) [6]Song -> Если вставить DateTimePicker1.Parent := StringGrid1
в TStringGrid.onLeftTopChanged все равно с прокруткой не работает, получается какая то ерунда.
← →
r900 (2003-07-02 14:04) [7]Семен Сорокин -> А как увязать ваш компонент с ячейками StringGrid? Если можно на моем примере.
← →
Семен Сорокин (2003-07-02 14:28) [8]r900 (02.07.03 14:04)
делаешь наследника - ловишь скроллы - сдвигаешь свой DateTimePicker1
← →
r900 (2003-07-02 14:57) [9]А можно все-таки пример использования вашего наследника, если нетрудно
← →
ZEE (2003-07-02 16:40) [10]Да не нужен наследник, Song прав
OnLeftTopChanged, но еще строку
DateTimePicker1.Top:=arow*(StringGrid1.DefaultRowHeight+1);
замени на
DateTimePicker1.Top:=(arow+StringGrid1.TopRow)*(StringGrid1.DefaultRowHeight+1);
← →
BOA_KAA (2003-07-02 16:51) [11]Для любителей вставлять в грид всякую гадость :-) в кладовке компонент валялся, насколько я помню. Если не найдешь - могу намылить
← →
r900 (2003-07-04 07:22) [12]Тогда можно вопрос? А что тогда в процедуре OnLeftTopChanged писать? Если \
DateTimePicker1.Parent := StringGrid1
DateTimePicker1.Left:=StringGrid1.LeftCol+StringGrid1.DefaultColWidth+3;
DateTimePicker1.Top:=arow*(StringGrid1.DefaultRowHeight+1);
DateTimePicker1.Width:=StringGrid1.DefaultColWidth;
DateTimePicker1.Enabled:=true;
DateTimePicker1.Visible:=true;
не получается?
BOA_KAA-> А что на счет компонента? В местной кладовке его не
нашел. Если не сложно скиньте по почте r900@yandex.ru
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c