Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.47 MB
Время: 0.007 c
1-1126704720
NetFlover
2005-09-14 17:32
2005.10.02
Проиграть по телефону музычку .... :)


1-1126008318
Квэнди
2005-09-06 16:05
2005.10.02
Расчет угла поляризации


1-1126413742
Aliv
2005-09-11 08:42
2005.10.02
openfiledialog и loadfromfile


1-1126158174
Monk
2005-09-08 09:42
2005.10.02
Событие нажатия кнопки мыши на строке скроллинга компонентов


1-1126443042
kolya.nn
2005-09-11 16:50
2005.10.02
Звук в Windows





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский