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

Вниз

Рабочий код перестал работать.   Найти похожие ветки 

 
SottNick ©   (2002-11-28 07:18) [0]

Рабочая демка.
Была...
EXE-шник рабочий остался,
но компилятор теперь ругаться начал
[Error] Unit1.pas(44): Incompatible types: "TMyGrid" and "TDBGrid"

ЧТО СТРЯСЛОСЬ?

unit Unit1;

interface

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

procedure KillScrollBars(Sender: TDBGrid);

type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
{$R *.DFM}
type
TMyGrid = class(TCustomGrid)
private
public
procedure NotScrollBars;
end;

procedure TMyGrid.NotScrollBars;
begin
scrollbars:=ssNone; { Защищенный метод TCustomGrid }
end;


procedure KillScrollBars(Sender: TDBGrid);
begin
(Sender as TMyGrid).NotScrollBars;//ОШИБКА ТУТ !!!!!!!!!!!!!!!
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
KillScrollBars(DBGrid1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowScrollBar(DBGrid1.Handle,SB_BOTH,false);
end;

end.


 
tga ©   (2002-11-28 07:24) [1]

Проследи внимательно тип Sender

Я так понимаю он у тебя не "TMyGrid" а "TDBGrid"



 
SottNick ©   (2002-11-28 07:37) [2]

>> tga
а я типа не знал...

Я ж говорю, код работал, т.е. компилировался.
EXE-шник есть. Работает, как и задумано.


 
Юрий Зотов ©   (2002-11-28 08:07) [3]

Не нужен Вам для этого никакой свой грид, доступ к protected-секции делается проще. В любом месте юнита пишете:

type
TFriendGrid = class(TDBGrid);

И все, больше ничего не требуется. Везде ниже этой строки Вы имеете доступ к protected-секции TDBGrid прямым приведением типа.

procedure TForm1.Button1Click(Sender: TObject);
begin
TFriendGrid(DBGrid1).ScrollBars := ssNone
end;


 
SottNick ©   (2002-11-28 08:23) [4]

работает
спасибо

но, мой тоже когда-то работал...

а можно как нить до private секции добраться?


 
Дмитрий К.К. ©   (2002-11-28 08:26) [5]

Между прочим, хороший вопрос (насчет скрытия полос прокрутки у DB-грида).

Юрий, я так понимаю, экземпляр класса TFriendGrid нужно программно создать, то есть в design-time я его никогда не увижу?


 
Song ©   (2002-11-28 08:41) [6]

>>Юрий, я так понимаю, экземпляр класса TFriendGrid нужно программно создать, то есть в design-time я его никогда не увижу?
Само собой. Это программно созданный наследник, существующий только на время выполнения приложения.


 
Дмитрий К.К. ©   (2002-11-28 08:45) [7]

Очень неудобно тогда настраивать ентот грид для лучшего визуального представления :(


 
Song ©   (2002-11-28 08:51) [8]

Почему? Это же наследник. На экране он будет выглядеть так же как папаша, за исключением, то, если Вы что-то добавили или убрали.


 
Юрий Зотов ©   (2002-11-28 09:09) [9]

> экземпляр класса TFriendGrid нужно программно создать

Его вообще не нужно создавать - никаких Create не требуется. Это фиктивный наследник, ничем не отличающийся от своего предка, не имеющий никакого своего кода и нужный только для программного доступа к protected-секции (достигается за счет особенностей объектной модели Delphi).

Его использование в design-time, во-первых, невозможно (ведь мы его не вносим ни в какой пакет и не регистрируем), а во-вторых, бессмысленно (поскольку он ничем не отличается от своего стандартного предка). Да и в run-time он фактически тоже не используется, поскольку ни одного его экземпляра мы не создаем.

Получить таким же образом доступ к private-секции нельзя. Да и не нужно - это будет уже больше похоже на хакерство, а не на программирование. Хотя методы получения такого доступа есть (не для всех случаев, но все же есть).



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

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

Наверх




Память: 0.49 MB
Время: 0.015 c
3-27895
al-er
2002-11-21 19:30
2002.12.09
Database Desktop 7 не видит некоторые записи


4-28373
Deema Po
2002-10-25 20:20
2002.12.09
Почти TOPMOST


1-28116
Starkom
2002-11-28 14:32
2002.12.09
Как отследить момент выгрузки BDE?


14-28256
Manic Mechanic
2002-11-15 18:12
2002.12.09
За здоровый образ жизни !!!


1-28129
FROM_X
2002-11-28 17:43
2002.12.09
Ну будте человеками Innerfuse Pascal Script кто знает ?