Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 559

/ вопрос открыт /

Здравствуйте, уважаемые эксперты! Нужно было написать пример демонстрирующий окрашивания ячеек,столбцов,строк StringGrid в различные цвета.То что у меня получилось ниже.Но кое-что мне не нравиться,а как исправить не знаю.
1.При открытии формы,окрашиваться в белый должны все StringGrid - ы,у меня только один.
2.Как сделать что бы все StringGrid - ы были без выделенной ячейки.
3.Надо что бы при смене цвета,у StringGrid - ов с окрашиванием столбцов и строк,старые цвета не пропадали.
Итак есть 3 StringGrid-а(5X5), 3 таймера.

Приложение:
  1. unit ColorUnit;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, Grids, ExtCtrls;
  8. type
  9. TColorForm = class(TForm)
  10. Panel1: TPanel;
  11. StringGrid1: TStringGrid;
  12. Panel2: TPanel;
  13. StringGrid2: TStringGrid;
  14. Panel3: TPanel;
  15. StringGrid3: TStringGrid;
  16. Timer1: TTimer;
  17. Timer2: TTimer;
  18. Timer3: TTimer;
  19. procedure FormCreate(Sender: TObject);
  20. procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  21. Rect: TRect; State: TGridDrawState);
  22. procedure Timer1Timer(Sender: TObject);
  23. procedure Timer2Timer(Sender: TObject);
  24. procedure StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
  25. Rect: TRect; State: TGridDrawState);
  26. procedure Timer3Timer(Sender: TObject);
  27. procedure StringGrid3DrawCell(Sender: TObject; ACol, ARow: Integer;
  28. Rect: TRect; State: TGridDrawState);
  29. private
  30. { Private declarations }
  31. public
  32. { Public declarations }
  33. end;
  34. type
  35. TStrColor = class(TObject)
  36. public
  37. Color: TColor;
  38. end;
  39.  
  40. var ColorForm: TColorForm;
  41.  
  42. implementation
  43.  
  44. {$R *.dfm}
  45.  
  46. var R,C,R2,C2,R3,C3: integer;
  47.  
  48. procedure TColorForm.FormCreate(Sender: TObject);
  49. var i, j, k: Integer;
  50. begin
  51. for k := 0 to ColorForm.ComponentCount -1 do
  52. begin
  53. if (ColorForm.Components[k] is TStringGrid) then
  54. begin
  55. with (ColorForm.Components[k] as TStringGrid) do
  56. begin
  57. for i := 0 to ColCount - 1 do
  58. for j := 0 to RowCount - 1 do
  59. begin
  60. Objects[i, j] := TStrColor.Create;
  61. ((ColorForm.Components[k] as TStringGrid).Objects[i, j] as TStrColor).Color:= clWhite;
  62. end;
  63. end;
  64. end;
  65. end;
  66. Randomize;
  67. end;
  68.  
  69. procedure TColorForm.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;Rect: TRect; State: TGridDrawState);
  70. begin
  71. with StringGrid1, Canvas do
  72. begin
  73. Brush.Color := (StringGrid1.Objects[ACol, ARow] as TStrColor).Color;
  74. FillRect(Rect);
  75. TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);
  76. end;
  77. end;
  78.  
  79. procedure TColorForm.Timer1Timer(Sender: TObject);
  80. begin
  81. with StringGrid1 do
  82. begin
  83. SetFocus;
  84. R:= random(5);
  85. C:= random(5);
  86. (StringGrid1.Objects[C, R] as TStrColor).Color:= random(255) shl 16 or random(255) shl 8 or random(255);
  87. Invalidate;
  88. end;
  89. end;
  90.  
  91. procedure TColorForm.Timer2Timer(Sender: TObject);
  92. begin
  93. with StringGrid2 do
  94. begin
  95. SetFocus;
  96. R2:= random(5);
  97. C2:= random(5);
  98. (StringGrid2.Objects[C2, R2] as TStrColor).Color:= random(255) shl 16 or random(255) shl 8 or random(255);
  99. Invalidate;
  100. end;
  101. end;
  102.  
  103. procedure TColorForm.StringGrid2DrawCell(Sender: TObject; ACol,
  104. ARow: Integer; Rect: TRect; State: TGridDrawState);
  105. var j : integer;
  106. begin
  107. with StringGrid2, Canvas do
  108. begin
  109. if ACol = C2 then
  110. begin
  111. for j := 0 to RowCount - 1 do
  112. begin
  113. Brush.Color := (StringGrid2.Objects[C2, j] as TStrColor).Color;
  114. FillRect(Rect);
  115. TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);
  116. end;
  117. end;
  118. end;
  119. end;
  120.  
  121. procedure TColorForm.Timer3Timer(Sender: TObject);
  122. begin
  123. with StringGrid3 do
  124. begin
  125. SetFocus;
  126. R3:= random(5);
  127. C3:= random(5);
  128. (StringGrid3.Objects[C3, R3] as TStrColor).Color:= random(255) shl 16 or random(255) shl 8 or random(255);
  129. Invalidate;
  130. end;
  131. end;
  132.  
  133. procedure TColorForm.StringGrid3DrawCell(Sender: TObject; ACol,
  134. ARow: Integer; Rect: TRect; State: TGridDrawState);
  135. var i: integer;
  136. begin
  137. with StringGrid3, Canvas do
  138. begin
  139. if ARow = R3 then
  140. begin
  141. for i := 0 to ColCount - 1 do
  142. begin
  143. Brush.Color := (StringGrid3.Objects[i, R3] as TStrColor).Color;
  144. FillRect(Rect);
  145. TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);
  146. end;
  147. end;
  148. end;
  149. end;
  150.  
  151. end.


GAZ Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: GAZ (статус: Посетитель)
Вопрос отправлен: 24 марта 2009, 18:47
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 26 марта 2009, 18:42; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 24 марта 2009, 21:39 [#1]:

Господи, какой УЖОС!
Не показывай свой аццкий код больше, у меня чуть бошку не оторвало. Особенно, без подсветки синтаксиса и моноширинного шрифта.
Ну напиши ты ЦЕЛЬ (!!!). Что тебе нужно?! Я напишу тебе примерчик, если хватит моей квалификации.

З.Ы. Сорри за эмоции. Может всё-таки откажешься от TStringGrid и попробуешь TDrawGrid? Это я так, к слову...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
GAZ

GAZ (статус: Посетитель), 24 марта 2009, 21:53 [#2]:

min@y™
Слушай я же не бакалавр, ты скажи что не так, исправь,что сразу возмущаться. Для StringGrid - а задали,я же сказал как демонстрационный пример.
GAZ

GAZ (статус: Посетитель), 24 марта 2009, 21:59 [#3]:

min@y™
А нужно следующее по таймеру у первого StringGrid-а случайная ячейка окрашивается в случайный цвет, у второго случайная строка, у третьего случайный столбец.
min@y™

min@y™ (статус: Доктор наук), 24 марта 2009, 22:39 [#4]:

Цитата:


А нужно следующее по таймеру у первого StringGrid-а случайная ячейка окрашивается в случайный цвет, у второго случайная строка, у третьего случайный столбец.


Завтра приду на работу - напишу. Но только с нуля. Править такой код - нуевонафиг. Щас спать хочу.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
GAZ

GAZ (статус: Посетитель), 24 марта 2009, 22:47 [#5]:

min@y™
Ок!
Да и я там в № 2 552, тебе по твоему коду вопрос задал,если не сложно ответь тоже
min@y™

min@y™ (статус: Доктор наук), 25 марта 2009, 21:02 [#6]:

Ну, потратил я полчаса, написал тебе пример с таблицей.

Скачать будешь отсюда.

Где моё пиво?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
GAZ

GAZ (статус: Посетитель), 26 марта 2009, 18:42 [#7]:

min@y™
Круто,то что надо. Брат я как разбогатею,тебе пивзавод куплю.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:27
Выполнено за 0.03 сек.