Главная страница
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.023 c
9-1091606822
Ландграф Павел
2004-08-04 12:07
2004.12.12
поиск пути не по клеткам...


6-1096832406
Wish
2004-10-03 23:40
2004.12.12
Передача файлов через сеть


3-1100301804
Dik
2004-11-13 02:23
2004.12.12
Отмена сообщения об ошибке


14-1100788448
Игорь Шевченко
2004-11-18 17:34
2004.12.12
Открыта регистрация на повторный семинар Borland ALM 2005


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