Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.19;
Скачать: CL | DM;

Вниз

Кто найдёт глюк в процедуре?   Найти похожие ветки 

 
^Sanya ©   (2002-09-06 12:56) [0]

procedure SGDraw(SG : TStringGrid; ACol, ARow : integer; ARect : TRect);
begin
with (SG as TStringGrid), (SG as TStringGrid).Canvas do

// если попадаем в фикс. ячейку, то цвета там другие...
if ((ACol+1) > FixedCols) and ((ARow+1) > FixedRows) then
begin
Brush.Color := Colors.TableBGRNDColor;
Pen.Color := Colors.TableBRDRColor;
Rectangle(ARect.Left-1, ARect.Top-1, ARect.Right+1, ARect.Bottom+1);
TextOut(ARect.Left+2, ARect.Top+2, Cells[ACol, ARow]);
end
else
begin
Brush.Color := Colors.TableFxdBgrndColor;
Pen.Color := Colors.TableFxdBrdrColor;
Canvas.Font := Fonts.TableFxdFont;
Rectangle(ARect.Left-1, ARect.Top-1, ARect.Right+1, ARect.Bottom+1);
TextOut(ARect.Left+((ColWidths[ACol] - TextWidth(Cells[ACol, ARow]) )div 2),
ARect.Top+2, Cells[ACol, ARow]);
Canvas.Font := Fonts.TableFont;
end;

end;


При условии, что Font.TableFont и Font.TableFxdFont уже созданы от TFont ранее в другом модуле, в строке Canvas.Font := Fonts.TableFxdFont;
выдаёт Access Violation


 
Smithson ©   (2002-09-06 13:05) [1]

Canvas.Font.Assign(Fonts.....)
Где в описании было, что свойства Font нельзя присваивать.


 
MBo ©   (2002-09-06 13:10) [2]

не в тему, но все же..
(SG as TStringGrid)
ни к чему это - SG явно описан как TSTringGrid


 
^Sanya ©   (2002-09-06 13:23) [3]


> MBo © (06.09.02 13:10)

Грешен, забыл, хотя знал...
Привычка...


 
Smithson ©   (2002-09-06 13:33) [4]

Я на эти грабли наступаю раз в полгода.

Есть встречный вопрос. В Инспекторе объектов меняю у кнопки цвет шрифта и ставлю стиль Bold. Шрифт на кнопке утолщается, но ЦВЕТ НЕ МЕНЯЕТ. В чем дело?


 
Anatoly Podgoretsky ©   (2002-09-06 13:37) [5]

Ты лучше вообще убери with избежить многих неприятностей с неодназной интерпритацией его, особенно когда в нем более одного вложения


 
Игорь Шевченко ©   (2002-09-06 13:53) [6]

Smithson © (06.09.02 13:33)

Дело в том, что надпись на кнопке (TButton) рисует Windows.
Можно использовать TBitBtn - она рисуется средствами Delphi


 
^Sanya ©   (2002-09-06 14:00) [7]

Короче я тут выявил одну штуку.
Грубо говоря, вышло, что:
MyFont := YourFont;
и
MyFont.Assign(YourFont);

РАЗНЫЕ ВЕЩИ?!

Assign в любом случае правильно "переприсвоит" все свойства объекта, но возникает вопрос:
чем так плохо присвивание ":=" ? Оно делает нечто иное?
Судя по природе глюка, я решил, что он крепко связан с распределением динамической памяти... то есть обычное ":=" как-то коряво это делает?!

Жду объяснений опытных программистов, поскольку у меня в основном догадки...

Всем благодарен...


 
Старый Паскалист   (2002-09-06 14:19) [8]

MyFont := YourFont;
и
MyFont.Assign(YourFont);
- действительно разные вещи.

А
StringGrid.Font := YourFont;
и
StringGrid.Font.Assign(YourFont);
- одно и то же.

TControl = class(...)
...
property Font: TFont read FFont write SetFont stored IsFontStored;
...

procedure TControl.SetFont(Value: TFont);
begin
FFont.Assign(Value);
end;


 
kronprince ©   (2002-09-06 16:00) [9]

- начинать надо так :)
Кто найдёт глюк в процедуре? - тому ставлю два пива


 
kronprince ©   (2002-09-06 16:05) [10]

MyFont := YourFont;
- разным указателям присваивается ссылка на один объект

MyFont.Assign(YourFont);
- MyFont заполняется свойствами объекта YourFont



Страницы: 1 вся ветка

Текущий архив: 2002.09.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
4-61368
Oduvan
2002-07-26 14:30
2002.09.19
Как вытащить актывный URL из актовного окна браузера?


1-61192
Dmitriy Polskoy
2002-09-06 12:49
2002.09.19
Определение имени файла


1-61048
WFox
2002-09-09 10:55
2002.09.19
ComboBox и формат страницы


1-61126
bobr12
2002-09-06 10:59
2002.09.19
Delphi + Excel


1-61124
A. N. Onim
2002-09-10 11:25
2002.09.19
Проблемы с XML