Форум: "Основная";
Текущий архив: 2002.11.11;
Скачать: [xml.tar.bz2];
ВнизМастера, помогите с компонентом, наследником 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c