| 
| 
 | Вопрос # 2 559/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты! Нужно было написать пример демонстрирующий окрашивания ячеек,столбцов,строк StringGrid в различные цвета.То что у меня получилось ниже.Но кое-что мне не нравиться,а как исправить не знаю.1.При открытии формы,окрашиваться в белый должны все StringGrid - ы,у меня только один.
 2.Как сделать что бы все StringGrid - ы были без выделенной ячейки.
 3.Надо что бы при смене цвета,у StringGrid - ов с окрашиванием столбцов и строк,старые цвета не пропадали.
 Итак есть 3 StringGrid-а(5X5), 3 таймера.
 Приложение:Переключить в обычный режим unit ColorUnit; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, Grids, ExtCtrls;type  TColorForm = class(TForm)    Panel1: TPanel;    StringGrid1: TStringGrid;    Panel2: TPanel;    StringGrid2: TStringGrid;    Panel3: TPanel;    StringGrid3: TStringGrid;    Timer1: TTimer;    Timer2: TTimer;    Timer3: TTimer;    procedure FormCreate(Sender: TObject);    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;      Rect: TRect; State: TGridDrawState);    procedure Timer1Timer(Sender: TObject);    procedure Timer2Timer(Sender: TObject);    procedure StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;      Rect: TRect; State: TGridDrawState);    procedure Timer3Timer(Sender: TObject);    procedure StringGrid3DrawCell(Sender: TObject; ACol, ARow: Integer;      Rect: TRect; State: TGridDrawState);  private    { Private declarations }  public    { Public declarations }  end;type TStrColor = class(TObject)  public   Color: TColor;  end; var ColorForm: TColorForm; implementation {$R *.dfm} var R,C,R2,C2,R3,C3: integer; procedure TColorForm.FormCreate(Sender: TObject);var i, j, k: Integer;begin for k := 0  to ColorForm.ComponentCount -1 do  begin   if (ColorForm.Components[k] is TStringGrid) then    begin     with (ColorForm.Components[k] as TStringGrid) do      begin       for i := 0 to ColCount - 1 do        for j := 0 to RowCount - 1 do         begin         Objects[i, j] := TStrColor.Create;        ((ColorForm.Components[k] as TStringGrid).Objects[i, j] as TStrColor).Color:= clWhite;        end;      end;    end;  end; Randomize;end; procedure  TColorForm.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;Rect: TRect; State:
TGridDrawState);begin with StringGrid1, Canvas do  begin   Brush.Color := (StringGrid1.Objects[ACol, ARow] as TStrColor).Color;   FillRect(Rect);   TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);  end;end; procedure  TColorForm.Timer1Timer(Sender: TObject);begin with StringGrid1 do  begin   SetFocus;   R:= random(5);   C:= random(5);  (StringGrid1.Objects[C, R] as TStrColor).Color:= random(255) shl 16 or random(255) shl 8 or
random(255);   Invalidate;  end;end; procedure TColorForm.Timer2Timer(Sender: TObject);begin with StringGrid2 do  begin   SetFocus;   R2:= random(5);   C2:= random(5);   (StringGrid2.Objects[C2, R2] as TStrColor).Color:= random(255) shl 16 or random(255) shl 8 or
random(255);   Invalidate;  end;end; procedure TColorForm.StringGrid2DrawCell(Sender: TObject; ACol,  ARow: Integer; Rect: TRect; State: TGridDrawState);var j : integer;begin with StringGrid2, Canvas do  begin   if ACol = C2 then    begin     for j := 0 to RowCount - 1 do      begin       Brush.Color := (StringGrid2.Objects[C2, j] as TStrColor).Color;       FillRect(Rect);       TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);     end;    end;  end;end; procedure TColorForm.Timer3Timer(Sender: TObject);begin with StringGrid3 do  begin   SetFocus;   R3:= random(5);   C3:= random(5);   (StringGrid3.Objects[C3, R3] as TStrColor).Color:= random(255) shl 16 or random(255) shl 8 or
random(255);   Invalidate;  end;end; procedure TColorForm.StringGrid3DrawCell(Sender: TObject; ACol,  ARow: Integer; Rect: TRect; State: TGridDrawState);var i: integer;begin with StringGrid3, Canvas do  begin   if ARow = R3 then    begin     for i := 0 to ColCount - 1 do      begin       Brush.Color := (StringGrid3.Objects[i, R3] as TStrColor).Color;       FillRect(Rect);       TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);      end;    end;  end;end; end.
|  |   Вопрос задал: GAZ (статус: Посетитель)Вопрос отправлен: 24 марта 2009, 18:47
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 7; последнее сообщение — 26 марта 2009, 18:42; участников в обсуждении: 2. 
|   | min@y™ (статус: Доктор наук), 24 марта 2009, 21:39 [#1]:Господи, какой УЖОС! Не показывай свой аццкий код больше, у меня чуть бошку не оторвало. Особенно, без подсветки синтаксиса и моноширинного шрифта.
 Ну напиши ты ЦЕЛЬ (!!!). Что тебе нужно?! Я напишу тебе примерчик, если хватит моей квалификации.
 
 З.Ы. Сорри за эмоции. Может всё-таки откажешься от TStringGrid и попробуешь TDrawGrid? Это я так, к слову...
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | GAZ (статус: Посетитель), 24 марта 2009, 21:53 [#2]:min@y™ Слушай я же не бакалавр, ты скажи что не так, исправь,что сразу возмущаться. Для StringGrid - а задали,я же сказал как демонстрационный пример.
 |  
|   | GAZ (статус: Посетитель), 24 марта 2009, 21:59 [#3]:min@y™ А нужно следующее по таймеру у первого StringGrid-а случайная ячейка окрашивается в случайный цвет, у второго случайная строка, у третьего случайный столбец.
 |  
|   | min@y™ (статус: Доктор наук), 24 марта 2009, 22:39 [#4]: Цитата: А нужно следующее по таймеру у первого StringGrid-а случайная ячейка окрашивается в случайный цвет, у второго случайная строка, у третьего случайный столбец.
 
 
 Завтра приду на работу - напишу. Но только с нуля. Править такой код - нуевонафиг. Щас спать хочу.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | GAZ (статус: Посетитель), 24 марта 2009, 22:47 [#5]:min@y™ Ок!
 Да и я там в № 2 552, тебе по твоему коду вопрос задал,если не сложно ответь тоже
 |  
|   | min@y™ (статус: Доктор наук), 25 марта 2009, 21:02 [#6]:Ну, потратил я полчаса, написал тебе пример с таблицей. 
 Скачать будешь отсюда.
 
 Где моё пиво?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | GAZ (статус: Посетитель), 26 марта 2009, 18:42 [#7]:min@y™ Круто,то что надо. Брат я как разбогатею,тебе пивзавод куплю.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |