Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];
Внизкак превратить TStringGrid в TBooleanGrid Найти похожие ветки
← →
integery (2005-09-07 21:35) [0]как превратить TStringGrid в TBooleanGrid тобто шоб в Grid были CheckBox
← →
megabax (2005-09-07 21:54) [1]Может, лучше не TStringGrid, а TDrawGird превратить в TBoolean grid?
но в любом случае, придется писать новый компонент, где переписывать очень много методов.
← →
Zacho © (2005-09-07 22:09) [2]Ты ещё напиши, что такое TBooleanGrid, поскольку кроме тебя этого никто не знает.
← →
integery (2005-09-07 22:32) [3]я образно выразился - шоб в Grid вместо ячеек из String были CheckBox
← →
integery (2005-09-07 22:46) [4]вот що вишло
procedure DrawGridCheckBox(Canvas: TCanvas; Rect: TRect; Checked: boolean);
var
DrawFlags: Integer;
begin
Canvas.TextRect(Rect, Rect.Left + 1, Rect.Top + 1, " ");
DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONPUSH or DFCS_ADJUSTRECT);
DrawFlags := DFCS_BUTTONCHECK or DFCS_ADJUSTRECT;// DFCS_BUTTONCHECK
if Checked then
DrawFlags := DrawFlags or DFCS_CHECKED;
DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DrawFlags);
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (gdFocused in State) then
begin
StringGrid1.Canvas.Brush.Color := clBlack;
StringGrid1.Canvas.Font.Color := clWhite;
end
else
if StringGrid1.Cells[ACol, ARow] = "0" then
StringGrid1.Canvas.Brush.color := clPaleRed
else
StringGrid1.canvas.brush.Color := clWhite;
if (ACol > 0) and (ARow > 0) then
begin
StringGrid1.Canvas.FillRect(Rect);
if StringGrid1.Cells[ACol, ARow] = "0" then
DrawGridCheckBox(StringGrid1.Canvas, Rect, false)
else DrawGridCheckBox(StringGrid1.Canvas, Rect, true) ;
// StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow]);
end;
end;
но есть маленькое но , штоб отображало нужно из клавиатури вносить знасение , а как зделать штоб мишкой, я хочу зделать штото на подобе в AD там где свойства пользователя вход в систему.
← →
integery (2005-09-07 22:46) [5]вот що вишло
procedure DrawGridCheckBox(Canvas: TCanvas; Rect: TRect; Checked: boolean);
var
DrawFlags: Integer;
begin
Canvas.TextRect(Rect, Rect.Left + 1, Rect.Top + 1, " ");
DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONPUSH or DFCS_ADJUSTRECT);
DrawFlags := DFCS_BUTTONCHECK or DFCS_ADJUSTRECT;// DFCS_BUTTONCHECK
if Checked then
DrawFlags := DrawFlags or DFCS_CHECKED;
DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DrawFlags);
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (gdFocused in State) then
begin
StringGrid1.Canvas.Brush.Color := clBlack;
StringGrid1.Canvas.Font.Color := clWhite;
end
else
if StringGrid1.Cells[ACol, ARow] = "0" then
StringGrid1.Canvas.Brush.color := clPaleRed
else
StringGrid1.canvas.brush.Color := clWhite;
if (ACol > 0) and (ARow > 0) then
begin
StringGrid1.Canvas.FillRect(Rect);
if StringGrid1.Cells[ACol, ARow] = "0" then
DrawGridCheckBox(StringGrid1.Canvas, Rect, false)
else DrawGridCheckBox(StringGrid1.Canvas, Rect, true) ;
// StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow]);
end;
end;
но есть маленькое но , штоб отображало нужно из клавиатури вносить знасение , а как зделать штоб мишкой, я хочу зделать штото на подобе в AD там где свойства пользователя вход в систему.
← →
Zacho © (2005-09-07 22:52) [6]Возьми TDBGridEh c http://www.ehlib.com/RUS/default.htm
← →
jack128 © (2005-09-07 22:53) [7]procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
const
CheckStates: array [False..True] of Integer = (0, DFCS_CHECKED);
begin
if not (gdFixed in State) then
with Sender as TStringGrid do
DrawFrameControl(Canvas.Handle, Rect,
DFC_BUTTON, DFCS_BUTTONCHECK or CheckStates[Objects[ACol, ARow] <> nil]);
end;
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
ACol, ARow: Integer;
Rect: TRect;
begin
if (Button = mbLeft) and (ssDouble in Shift) then
with Sender as TStringGrid do
begin
MouseToCell(X, Y, ACol, ARow);
Objects[ACol, ARow] := TObject(not boolean(Objects[ACol, ARow]));
Rect := CellRect(ACol, ARow);
InvalidateRect(Handle, @Rect, False);
end;
end;
← →
integery (2005-09-08 10:29) [8]огромное спасибо jack128 ©
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c