|
Вопрос # 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™
Круто,то что надо. Брат я как разбогатею,тебе пивзавод куплю.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|