Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
14-28262
Andrey22
2002-11-18 14:13
2002.12.09
Gde vzjat DELPHI samu programmu????


1-28095
urich
2002-11-28 12:11
2002.12.09
Quick Report! Метод NewPage выдает ошибку!


7-28307
Senka
2002-10-04 15:58
2002.12.09
Как выполнить учет печати на принтере в Delphi6


8-28153
VID
2002-06-18 23:59
2002.12.09
Одновременное воспроизведение нескольких WAV-файлов


6-28188
guest_xxx
2002-10-07 09:36
2002.12.09
Шлюз?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский