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

Вниз

Мастера, помогите с компонентом, наследником TStringGrid...   Найти похожие ветки 

 
^Sanya ©   (2002-10-31 23:48) [0]

Создаю для курсовика компонент TExStringGrid от TStringGrid.
Появились следующие проблемы:

1-как при изменении определённых свойств компонента осуществлять его перерисовку в design-mode?
Я исопльзовал Invalidate и InvalidateGrid, которые использует Borland(R) в модуле Grids, но почему у Borland"а всё работает как надо (напр. при изменении св-ва Color StringGrid сразу же перерисовывается), а у меня всё перерисуется, только если я перенесу мышкой компонент за пределы формы и верну обратно - то есть вручную и коряво.

2-как убрать из инспектора объектов св-ва Color и Font при условии, что мой компонент - наследник от TStringGrid, а вещей типа "TCustomStringGrid" не существует? А выбирать другого предка и заново рожать св-ва типа Cells я не собираюсь:)
Буду очень признателен за ответы, а пока буду рыться в книгах...


 
^Sanya ©   (2002-11-01 17:29) [1]

пожалуйста...


 
Юрий Зотов ©   (2002-11-01 18:09) [2]

1. Invalidate должно работать. Если не работает - значит что-то Вы намудрили в другом месте.

2. Зарегистрируйте для ненужных свойств nil вместо класса редактора.


 
^Sanya ©   (2002-11-01 20:06) [3]


> 2. Зарегистрируйте для ненужных свойств nil вместо класса
> редактора.


Что значит выражение "класс редактора"?
Класс-владелец метода, который "пишет"(стоит после write) свойство?
Можно ли поподробней?

Привожу исходник компонента:

unit ExStringGrid;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids;

type TColors = class(TPersistent)
private
FTableColor,
FTableBgrndColor,
FTableBrdrColor,
FTableFxdBgrndColor,
FTableFxdBrdrColor : TColor;
//procedure SetTableBgrndColor(A : TColor);
published
//


 
^Sanya ©   (2002-11-01 21:43) [4]

В
procedure TExStringGrid.SetColors(const Value: TColors);
var
i, j: byte;
begin
FColors := Value;
Invalidate
end;


переменные i, j не нужны, sorry.
Пожалуйста, помогите :)


 
^Sanya ©   (2002-11-02 18:44) [5]

Поясните, пожалуйста, следующие слова:

> 2. Зарегистрируйте для ненужных свойств nil вместо класса
> редактора.



 
Юрий Зотов ©   (2002-11-02 20:21) [6]

Ох, дружище, как все плохо, как все плохо...

1. Классы TColors и TFonts неработоспособны (нет Assign). В итоге SetFonts будет давать 100%-ную ошибку ("Can not assign ... to ..."), а SetColors - 100%-ные глюки и утечку памяти (переназначение внутренней ссылки на внешний объект).

2. Внутренние фонты FTableFont и FTableFxdFont должны создаваться и уничтожаться их контейнером TFonts, а не где-то там снаружи. Соответственно, для них должнв быть методы доступа по записи. Кстати, оба этих фонта у Вас не уничтожаются и снова идет утечка памяти.

3. При изменении отдельного фонта или цвета ничего не перерисовывается (да и вообще ничего не происходит). Думаю, Вы хотели получить обратное.

4. DrawCell не позволяет юзеру применить свою прорисовку, а если он попытается это сделать, то прорисовка получится двойной. Это и не гибко, и дает лишний тормоз. Так компоненты не пишут.

5. > Invalidate не генерирует OnDrawCell для каждой ячейки???
Нажмите F1. Там написано "entire control". Перевести?

6. > Что значит выражение "класс редактора"?
См. справку ("property editors" и RegisterPropertyEditor).



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
1-34032
tytus
2002-11-03 00:48
2002.11.11
Обновление OLEAUT32.DLL


14-34200
SPeller
2002-10-22 12:26
2002.11.11
Проигрыватель MPEG4/DivX под ДОС


3-33872
NeyroSpace
2002-10-21 14:38
2002.11.11
Если 2а IBQuery вешаются на одну IBTransaction1, какой из них


1-34088
Yasha
2002-10-31 11:54
2002.11.11
графика


14-34157
Snake2000
2002-10-20 14:17
2002.11.11
Какая карта лучше: Voodoo 3 или Geforce4 MX400 ?