Главная страница
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.018 c
14-34231
McSimm
2002-10-20 12:35
2002.11.11
Внимание, новый раздел сайта


1-34041
Шурик Ш
2002-10-30 17:55
2002.11.11
Как узнать каталог программы


7-34274
Keplin Sergey
2002-09-07 22:13
2002.11.11
Background file copy...


3-33898
VZ Alexandr
2002-10-22 20:20
2002.11.11
Помогите с Insert


1-33958
Григорий Ситнин
2002-10-30 10:41
2002.11.11
Собственный Form Wizard