Форум: "Основная";
Текущий архив: 2002.09.19;
Скачать: [xml.tar.bz2];
ВнизКто найдёт глюк в процедуре? Найти похожие ветки
← →
^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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c