Вниз
Скачать: CL | DM;

Цвет в stringride   Найти похожие ветки 

 
KOSH   (2004-11-29 10:31) [0]

Привет Всем! Подскажите плз. Надо сделать чтобы по нажатию на button строка находящаяся в фокусе в stringgride выделялась другим цветом, при передаче фокуса другой строке (произвольной) и
опять нажатии, выделилась еще одна строка и т.д. и т.п.
Обрабатывая drawcell все получается но если ранее выделенной строке опять дать фокус выделение затирается. Help my!!!


 
KOSH   (2004-11-29 10:58) [1]

Неужели вармантов нет? Помогите кто чем!


 
KSergey ©   (2004-11-29 11:01) [2]

Надо отдельно хранить список "отмеченных" строк (например, и номера) и обрабатывать эту информацию в drawcell


 
KOSH   (2004-11-30 16:41) [3]

В программе это выглядит примерно так:
unit Unit1;

// чтобы это работало  предварительно в options stringgrida надо установить
// gorowselect:=true
// и gorangeselect:=false

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Grids;

type
 TForm1 = class(TForm)
   Button1: TButton;
   StringGrid1: TStringGrid;
   procedure Button1Click(Sender: TObject);
   procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
     var CanSelect: Boolean);
   procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
     Rect: TRect; State: TGridDrawState);

 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 a,b:integer;

implementation
{$R *.dfm}
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
a:=arow;
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (gdFocused in State) then begin
StringGrid1.Canvas.Brush.Color := clsilver;
StringGrid1.Canvas.Font.Color := clblack;
end
else
if Arow = b
then StringGrid1.Canvas.Brush.color := clred
else StringGrid1.canvas.brush.Color := clwindow;
If (ACol > 0) and (ARow>0) then
begin
StringGrid1.canvas.fillRect(Rect);
StringGrid1.canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
b:=a;
stringgrid1.SetFocus;
end;
end.

Смутно представляю себе процес сохранения всех сохраненных строк
Может кто поможет....



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.045 c
1-1101588154
Zombie
2004-11-27 23:42
2004.12.12
Интересное предложение


4-1099146087
IronRat
2004-10-30 18:21
2004.12.12
FileMapping


1-1101595689
Кто---то
2004-11-28 01:48
2004.12.12
Вопрос мастерам Как объяснить следующие утечки памяти ?


3-1100166911
ALex11
2004-11-11 12:55
2004.12.12
Wer ist das: Insufficient disk space.???


3-1100515146
denis24
2004-11-15 13:39
2004.12.12
dbimage




   Наверх