Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: 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 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.037 c
1-1101650361
Bobby Digital
2004-11-28 16:59
2004.12.12
Listbox pt.3


3-1100117875
VitGun
2004-11-10 23:17
2004.12.12
Можно ли использовать один гереатор для двух триггеров?


6-1096735381
Хтз
2004-10-02 20:43
2004.12.12
Как включить или выключить сетвевой интерфейс???


9-1091707720
SwitchBlade
2004-08-05 16:08
2004.12.12
Есть ли DelphiX для Delphi 8?


14-1101327543
Ig
2004-11-24 23:19
2004.12.12
InterBase в Delphi//