![]() |
|
#1
|
|||
|
|||
![]() Возник вопрос: где (в каком свойстве) у TDrawGrid цвет заливка ячейки?
И еще, приложение мое готово уже почти на 99%, в приложении в рантйм режиме создаются 11 TDrawGrid-ов и 11 TLabel-ов, иногди показывает аксес виолатион. Если в дебаг нажать F7 - приложение после показа диалога с этим самым аксес виолатион (попытка чтения) - приложение нормально работает. Что это может быть такое и как с этим багом бороться? |
#2
|
||||
|
||||
![]() "Заливка" цветом осуществляется в событии OnDrawCell.
По ошибке: нужно видеть код. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() О событии вкурсе.
Вот кусок из кода, который вызывает ошибку времени исполнения: Код:
procedure TForm1.Button1Click(Sender: TObject); var i, x, y : integer; tm : TTimer; pb : TProgressBar; lb : TLabel; Msg:TWMGetMinMaxInfo; Grid : array[0..16] of TDrawGrid; Text : array[0..16] of TLabel; begin // Íîâå â³êíî? ç "äàíèìè òåñòóâàííÿ" + ïîñèë íà ïðèíòåð if Timer1<>Nil then Timer1.Free; for i := 1 to 11 do begin pb := TProgressBar(FindComponent('ProgressBar' + IntToStr(i))); if pb<>Nil then begin pb.Visible := false; pb.Free; end; lb := TLabel(FindComponent('Label' + IntToStr(i))); if lb<>Nil then lb.Destroy; end; x := screen.Width; y := screen.Height; Form1.Left := (x-1168) div 2; Form1.Top := y-800; Form1.Width := 1170; Button1.Free; Height := 700; // Àãðåñ³ÿ Text[0] := TLabel.Create(Form1); Text[0].Parent :=Form1; Text[0].Caption := 'Àãðåñ³ÿ'; Text[0].Left := 30; Grid[0] := TDrawGrid.Create(Form1); Grid[0].Tag := 1; Grid[0].Parent := Form1; Grid[0].Height := 6*agres; Grid[0].Left := 1; Grid[0].Top := Grid[0].Height - 600+20; Grid[0].RowCount := 1; Grid[0].ColCount := 1; Grid[0].Enabled := false; Grid[0].DefaultColWidth := 100; Grid[0].DefaultRowHeight := 6*agres; Grid[0].Width := 100; Grid[0].ScrollBars := ssNone; Grid[0].OnDrawCell:=DrawGrid1DrawCell; // Àëêîãîëü Text[1] := TLabel.Create(Form1); Text[1].Parent :=Form1; Text[1].Caption := 'Àëêîãîëü'; Text[1].Left := 130; Grid[1] := TDrawGrid.Create(Form1); Grid[1].Parent := Form1; Grid[1].Left := 106; Grid[1].Tag := 2; Grid[1].RowCount := 1; Grid[1].ColCount := 1; Grid[1].Enabled := false; Grid[1].DefaultColWidth := 100; Grid[1].DefaultRowHeight := 6*alcohol; Grid[1].Width := 100; Grid[1].Height := 6*alcohol; Grid[1].Top := 600-6*alcohol + 20; Grid[1].ScrollBars := ssNone; Grid[1].OnDrawCell:=DrawGrid1DrawCell; // Àëêîãîëü Text[2] := TLabel.Create(Form1); Text[2].Parent :=Form1; Text[2].Caption := 'Øåô'; Text[2].Left := 250; Grid[2] := TDrawGrid.Create(Form1); Grid[2].Parent := Form1; Grid[2].Left := 211; Grid[2].RowCount := 1; Grid[2].ColCount := 1; Grid[2].Enabled := false; Grid[2].DefaultColWidth := 100; Grid[2].DefaultRowHeight := 6*boss; Grid[2].Width := 100; Grid[2].Height := 6*boss; Grid[2].Top := 600-Grid[2].Height+20; Grid[2].ScrollBars := ssNone; Grid[2].Tag := 3; Grid[2].OnDrawCell:=DrawGrid1DrawCell; // Äåïðåñ³ÿ Text[3] := TLabel.Create(Form1); Text[3].Parent :=Form1; Text[3].Caption := 'Äåïðåñ³ÿ'; Text[3].Left := 345; Grid[3] := TDrawGrid.Create(Form1); Grid[3].Parent := Form1; Grid[3].Left := 316; Grid[3].RowCount := 1; Grid[3].ColCount := 1; Grid[3].Enabled := false; Grid[3].DefaultColWidth := 100; Grid[3].DefaultRowHeight := 6*depression; Grid[3].Width := 100; Grid[3].Height := 6*depression; Grid[3].Top := 600-Grid[3].Height+20; Grid[3].ScrollBars := ssNone; Grid[3].Tag := 4; Grid[3].OnDrawCell:=DrawGrid1DrawCell; // Áîðãè Text[4] := TLabel.Create(Form1); Text[4].Parent :=Form1; Text[4].Caption := 'Áîðãè'; Text[4].Left := 435; Grid[4] := TDrawGrid.Create(Form1); Grid[4].Parent := Form1; Grid[4].Left := 421; Grid[4].RowCount := 1; Grid[4].ColCount := 1; Grid[4].Enabled := false; Grid[4].DefaultColWidth := 100; Grid[4].DefaultRowHeight := 6*debts; Grid[4].Width := 100; Grid[4].Height := 6*debts; Grid[4].Top := 600-Grid[4].Height+20; Grid[4].ScrollBars := ssNone; Grid[4].Tag := 5; Grid[4].OnDrawCell:=DrawGrid1DrawCell; // Çàðïëàòà Text[5] := TLabel.Create(Form1); Text[5].Parent :=Form1; Text[5].Caption := 'Çàðïëàòà'; Text[5].Left := 540; Grid[5] := TDrawGrid.Create(Form1); Grid[5].Parent := Form1; Grid[5].Left := 526; Grid[5].RowCount := 1; Grid[5].ColCount := 1; Grid[5].Enabled := false; Grid[5].DefaultColWidth := 100; Grid[5].DefaultRowHeight := 6*salary; Grid[5].Width := 100; Grid[5].Height := 6*salary; Grid[5].Top := 600-Grid[5].Height+20; Grid[5].ScrollBars := ssNone; Grid[5].Tag := 6; Grid[5].OnDrawCell:=DrawGrid1DrawCell; // ²íôîðìàö³ÿ Text[6] := TLabel.Create(Form1); Text[6].Parent :=Form1; Text[6].Caption := '²íôîðìàö³ÿ'; Text[6].Left := 630; Grid[6] := TDrawGrid.Create(Form1); Grid[6].Parent := Form1; Grid[6].Left := 631; Grid[6].RowCount := 1; Grid[6].ColCount := 1; Grid[6].Enabled := false; Grid[6].DefaultColWidth := 100; Grid[6].DefaultRowHeight := 6*information; Grid[6].Width := 100; Grid[6].Height := 6*information; Grid[6].Top := 600-Grid[6].Height+20; Grid[6].ScrollBars := ssNone; Grid[6].Tag := 7; Grid[6].OnDrawCell:=DrawGrid1DrawCell; // ˳äåð Text[7] := TLabel.Create(Form1); Text[7].Parent :=Form1; Text[7].Caption := '˳äåð'; Text[7].Left := 738; Grid[7] := TDrawGrid.Create(Form1); Grid[7].Parent := Form1; Grid[7].Left := 736; Grid[7].RowCount := 1; Grid[7].ColCount := 1; Grid[7].Enabled := false; Grid[7].DefaultColWidth := 100; Grid[7].DefaultRowHeight := 6*leader; Grid[7].Width := 100; Grid[7].Height := 6*leader; Grid[7].Top := 600-Grid[7].Height+20; Grid[7].ScrollBars := ssNone; Grid[7].Tag := 8; Grid[7].OnDrawCell:=DrawGrid1DrawCell; // Ñòàòóñ Text[8] := TLabel.Create(Form1); Text[8].Parent :=Form1; Text[8].Caption := 'Ñòàòóñ'; Text[8].Left := 830; Grid[8] := TDrawGrid.Create(Form1); Grid[8].Parent := Form1; Grid[8].Left := 841; Grid[8].RowCount := 1; Grid[8].ColCount := 1; Grid[8].Enabled := false; Grid[8].DefaultColWidth := 100; Grid[8].DefaultRowHeight := 6*status; Grid[8].Width := 100; Grid[8].Height := 6*status; Grid[8].Top := 600-Grid[8].Height+20; Grid[8].ScrollBars := ssNone; Grid[8].Tag := 9; Grid[8].OnDrawCell:=DrawGrid1DrawCell; // Íàðêîòèêè Text[9] := TLabel.Create(Form1); Text[9].Parent :=Form1; Text[9].Caption := 'Íàðêîòèêè'; Text[9].Left := 950; Grid[9] := TDrawGrid.Create(Form1); Grid[9].Parent := Form1; Grid[9].Left := 946; Grid[9].RowCount := 1; Grid[9].ColCount := 1; Grid[9].Enabled := false; Grid[9].DefaultColWidth := 100; Grid[9].DefaultRowHeight := 6*drugs; Grid[9].Width := 100; Grid[9].Height := 6*drugs; Grid[9].Top := 600-Grid[9].Height+20; Grid[9].ScrollBars := ssNone; Grid[9].Tag := 10; Grid[9].OnDrawCell:=DrawGrid1DrawCell; // Çâ³ëüíåííÿ Text[10] := TLabel.Create(Form1); Text[10].Parent :=Form1; Text[10].Caption := 'Çâ³ëüíåííÿ'; Text[10].Left := 1060; Grid[10] := TDrawGrid.Create(Form1); Grid[10].Parent := Form1; Grid[10].Left := 1051; Grid[10].RowCount := 1; Grid[10].ColCount := 1; Grid[10].Enabled := false; Grid[10].DefaultColWidth := 100; Grid[10].DefaultRowHeight := 6*dismissal; Grid[10].Width := 100; Grid[10].Height := 6*dismissal; Grid[10].Top := 600-Grid[10].Height+20; Grid[10].ScrollBars := ssNone; Grid[10].Tag := 11; Grid[10].OnDrawCell:=DrawGrid1DrawCell; Button2.Left := (Form1.Width-Button2.Width) DIV 2; Button2.Top := 630; Button2.Visible := true; end; |
#4
|
||||
|
||||
![]() Копец китайский код, можно раз в 10 сократить
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
|||
|
|||
![]() Как это можно сократить?
и как залить ячейку? Написал такой код: Код:
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var s : String; begin case TDrawGrid(Sender).tag of 1: begin Grid[0].Canvas.Brush.Color := clRed; Как залить всю ячейку? Как залить всю ячейку нрашел: Код:
Grid[0].Canvas.Brush.Color := clRed; Grid[0].Canvas.FillRect(Rect); И ещзе один вопрос : нужен оператор выбора, но оператор выбора не работает с дробными числами... Как привести Real в Integr или как "обмануть" оператор case? Последний раз редактировалось lostbananan, 09.03.2013 в 17:04. |
#6
|
||||
|
||||
![]() Первое что бросилось в глаза
Код:
lb.Destroy; Код:
lb.Free; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
lostbananan (09.03.2013)
|
#7
|
||||
|
||||
![]() Цитата:
Код:
... var Cap: array [0..10] of string= ('lb0','lb1','lb2','lb3','lb4','lb5','lb6','lb7','lb8','lb9','lb10'); Lft: array [0..10] of integer= (30, 130, 250, 345, 435, 540, 630, 738, 830, 950, 1060); ... for i:=0 to 10 do begin Text[i]:= TLabel.Create(Form1); Text[i].Parent:=Form1; Text[i].Caption:= Cap[i]; Text[i].Left:= Lft[i]; ; end; ... Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 09.03.2013 в 18:19. |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
lostbananan (09.03.2013)
|
#8
|
||||
|
||||
![]() Это также можно сократить
Код:
... var Lft: array[0..10] of Integer = (30, 130, 250, 345, 435, 540, 630, 738, 830, 950, 1060); ... for i := 0 to 10 do begin Text[i] := TLabel.Create(Form1); Text[i].Parent := Form1; Text[i].Caption := 'lh' + IntToStr(I); Text[i].Left := Lft[i]; end; ... Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#9
|
||||
|
||||
![]() Взяли все за банана написали...
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#10
|
||||
|
||||
![]() Не всё, только часть.
![]() Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#11
|
||||
|
||||
![]() Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#12
|
||||
|
||||
![]() Ну да, не посмотрел - это косяк Дельфи. Копировать код нужно было из "блокнота". Я так лично предпочитаю из "FAR"-а.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#13
|
||||
|
||||
![]() Код:
unit Unit1; {** чтобы из Delphi в сообщение вставить код с кирилицей нужно переключить язык ввода в Delphi на русский перед копированием в буфер. **} interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} end. Пишу программы за еду. __________________ |
#14
|
|||
|
|||
![]() Все вроде в норме, но периодически возникает ошибка времени выполнения. ПричемЮ только что запустил из делфи (f9) ошибка возникла, а 5 минут назад - во время выполнения ошибки не было. ЗА ЭТИ 5 минут никаких изменений в коде НЕ БЫЛО!!
В чем здесь проблема? (ошибка чтения) Запустил еще раз программу на выполнение (прошло около минуты) - ошибки НЕТ!!! Что за волшебство?? |
#15
|
||||
|
||||
![]() Цитата:
[-] Блин, опоздал ![]() — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |