Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Error, ООП 
:(
    Опции темы
Vex
Дата 14.2.2003, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Код

type
  TMyMemo=class(TMemo);

  end;

 TForm1 = class(TForm)
 [B]  Memo1: TMyMemo; [/B]
 private
   { Private declarations }
   procedure WMCopy(var a:TWMCopy); message WM_COPY;
 public
   { Public declarations }
 end;


Почему так нельзя сделать? (Выдает ошибку).



--------------------
Слава Україні.
PM   Вверх
78125
Дата 14.2.2003, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



type
TMyMemo=class(TMemo);

end;

TForm1 = class(TForm)
Memo1: TMyMemo;
private
{ Private declarations }
procedure WMCopy(var a:TWMCopy); message WM_COPY;
public
{ Public declarations }
end;

по моим соображениям то ли вместо двоеточия надо =
то ли это дело в разделе var написать
то ли ... на этом мысль заканчивается

Это сообщение отредактировал(а) 78125 - 14.2.2003, 22:56
--------------------
купим подпись
PM MAIL   Вверх
SmaLL
Дата 14.2.2003, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 557
Регистрация: 17.12.2002
Где: Voronezh

Репутация: 1
Всего: 2



Цитата(Vex @ 14.2.2003, 14:45)
Код

type
  TMyMemo=class(TMemo);

 TForm1 = class(TForm)
 private
   { Private declarations }
   procedure WMCopy(var a:TWMCopy); message WM_COPY;
 public
    Memo1: TMyMemo;
   { Public declarations }
 end;


Почему так нельзя сделать? (Выдает ошибку).


Сразу после TForm1 = class(TForm) в описании формы пишутся поля и методы описанные в *.dfm.

Если хочешь получить наследника от TMemo, то сделай свой компонент и используй его.
Это делается так:
Меню Component/New Component, как родителя (ancestor type) выбираешь TMemo, а дальше думаю сам разберЁшься.


--------------------
Что ни делается - всЁ к лучшему! SmallWeb
Мой адрес не дом и не улица, мой адрес родной пивзавод!
PM MAIL WWW ICQ   Вверх
Song
Дата 15.2.2003, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Непонятно, где ты хочешь перехватить WM_COPY на форме или в мемо? Как у тебя написано перехватит в форме.


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Vex
Дата 15.2.2003, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Цитата(Song @ 15.2.2003, 08:16)
Непонятно, где ты хочешь перехватить WM_COPY на форме или в мемо? Как у тебя написано перехватит в форме.

В OleContainer, но для простоты возьмем Мемо. Я так понимаю, надо создать свой компонент потомок от мемо и добавить туда процедуру перехвата сообщения. Я на правильном пути?


--------------------
Слава Україні.
PM   Вверх
Vit
Дата 15.2.2003, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Ага, так не получится, чтобы вставить компонент в этот раздел:

TForm1 = class(TForm)
Memo1: TMyMemo;
private

надо чтобы он был зарегистрирован в палитре компонентов., иначе ты можешь вставить его только в секции Private, Protected, Public или Published и создавать его вручную. А если компонент прописывается между объявлением класса и private, то это значит, что визуальная оболочка Дельфи "знает" этот компонент и будет использовать его в Object Inspector. Кстати все компоненты, описанные в этой секции прописаны так же и в DFM файле


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vex
Дата 15.2.2003, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Спасибо, буду пробовать. smile.gif


--------------------
Слава Україні.
PM   Вверх
Vex
Дата 21.2.2003, 03:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Попробовал и ... ничего не вышло sad.gif

С Edit, например, такое проходит, а вот с OleContainer нет, может надо ловить какое-то другое сообщение?


--------------------
Слава Україні.
PM   Вверх
Leonx
  Дата 26.12.2019, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 26.12.2019

Репутация: нет
Всего: нет



Как вызвать в другом юните уже созданный экземпляр, и получить доступ к его полям.(Юниты связаны) Вот код Юнита, где создан класс. При таких действиях вылезает Error:this form of method call only allowed for class methods, но он и должен вылезать,т.к. я делаю неверно.Подскажите, как правильно. smile  smile 
Код

procedure TRegister.CreateReg;
begin
regA:=Tregister.create;
end;

procedure TRegister.AddReg;
begin
regA.Rname:='A';
regA.value:='00';
regA.AIndex:=0;
end;

procedure TRegister.DelReg;
begin
regA.Free;
end;



Вот юнит с формой
Код

procedure TEm.BitBtn1Click(Sender: TObject);
begin
TRegister.Addreg;
label1.Caption:=regA.RName;
end;

procedure TEm.FormCreate(Sender: TObject);
begin
Tregister.CreateReg;
end;

procedure TEm.FormDestroy(Sender: TObject);
begin
Tregister.delReg;
end.


Вот создание класса;
Код

TRegister = class(TProcessor)
  protected
  fvalue:string;
  fRName:string;
  fIndex:integer;
  //procedure SetRegister( Value:string);
  //function GetRegister:string;
  public
  property value:string read fvalue write fvalue;
  property RName:string read fRName write fRName;
  property AIndex:integer read fIndex write fIndex;
  procedure CreateReg;
  procedure AddReg();
  procedure DelReg();
  end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1351 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.