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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компонента с PopuMenu 
:(
    Опции темы
WaReZMEN
Дата 13.3.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Значит появилась необходимость сделать DBGrid со встроеным попут меню,
решил я написать компанену. Создал класс ... И возникла проблема как вызвать редактор своист попут меню (чтобы создать пункты меню ) в моем классе? 
Код

type
  TMMI_GridView = class(TDBGrid)
  private

    FDataSet: TpFIBDataSet;
    FEditForm: TForm;
   
    FItems: TMenuItem;
   

    procedure SetDataSource(const Value: TDataSource);
    function GetDataSource: TDataSource;
    function IsColorStored: Boolean;
    procedure SetColor(const Value: TColor);


    { Private declarations }
  protected
    { Protected declarations }
  public


    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    { Public declarations }
  published

      property DataSource: TDataSource read GetDataSource write SetDataSource;
      property EditForm : TForm read FEditForm write FEditForm;
      property ItemsPopUpMenu: TMenuItem read FItems;
  end;

PM MAIL ICQ   Вверх
WaReZMEN
Дата 15.3.2007, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Что то не кто мне неможет помочь??? Возможно я не правельно поставил вопрос? Вообщем подобная тема расматривалась давно на одном из форумов но так и не была завершина... Я помумал что может здесь есть более генеальные люди способные мне помочь.... Вот линк на ту тему: http://www.sql.ru/forum/actualthread.aspx?tid=263518
Буду признателе хотябы за какуюнибудь помощь...
PM MAIL ICQ   Вверх
Sunvas
Дата 15.3.2007, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Это - одна из проблемм что называется "не в зуб ногой". Тут недавно похожая темка проскакивала - http://forum.vingrad.ru/topic-138378/index.html - тоже никто не знал.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Bose
Дата 15.3.2007, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

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



WaReZMEN, ну так какая проблема?

у DBGrida есть свойство PopupMenu. Создай в своём компоненте TpopupMenu, и присвоей его в self.PopupMenu где-нибудь в конструкторе.
PM MAIL WWW Skype   Вверх
WaReZMEN
Дата 16.3.2007, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я так и сделал smile Но проблема то в том что не охраняются пункты меню добавленые в дезаинере.... Вот код

Код

unit DBGridPopUpMenu;

interface

uses
  SysUtils, Classes, Controls, Grids, DBGrids,Menus;

type

  TDBGridPopUpMemu = class(TDBGrid)
  private

    procedure SetPopupMenu(const Value: TPopupMenu);
    function GetFPopupMenu: TPopupMenu;



    { Private declarations }
  protected

    { Protected declarations }
  public
       pp:TPopupMenu;

  Constructor Create (AOwner:TComponent);Override;

    { Public declarations }
  published
      property PopupMenu: TPopupMenu read GetFPopupMenu write SetPopupMenu;



  { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Rosy', [TDBGridPopUpMemu]);
end;

{ TDBGridPopUpMemu }

constructor TDBGridPopUpMemu.Create(AOwner: TComponent);
var
  k: word;
begin
  inherited Create(AOwner);

 {  pp:=TPopupMenu.Create(self);
   pp.Name:='MYMenu';
   ItemsMenu:=TMenuItem.Create(pp);
   pp.SetSubComponent(true);
   pp.Items.SetSubComponent(true);
  }
  if (csDesigning in ComponentState) then
    begin
      pp:=TPopupMenu.Create(self);
      pp.Name := 'PopupMenuExt';
      pp.SetSubComponent(true);
      pp.Items.SetSubComponent(true);
  end


end;


function TDBGridPopUpMemu.GetFPopupMenu: TPopupMenu;
begin
  Result:=Self.pp;
end;

procedure TDBGridPopUpMemu.SetPopupMenu(const Value: TPopupMenu);
begin
   if Value <> nil then
    begin
      Value.FreeNotification(self);
    end;
end;

end.

PM MAIL ICQ   Вверх
Bose
Дата 16.3.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

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



Цитата(WaReZMEN @  16.3.2007,  01:38 Найти цитируемый пост)
Но проблема то в том что не охраняются пункты меню добавленые в дезаинере....


Честно говоря не сталкивался. Так что ответа не знаю... 

А немного в сторону...

WaReZMEN, а зачем тебе метод SetPopupMenu?

По идее свойство PopupMenu: TPopupMenu достаточно объявить как read-only. Оно же создаётся при создании компонента и должно освобождаться при его уничтожении. Нет?

Рискну предположить что возможно этот метод может как-то повлиять. 

Ещё раз повторюсь, что не сталкивался с такой ситуацией..

PM MAIL WWW Skype   Вверх
WaReZMEN
Дата 18.3.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Bose метод SetPopupMenu не как не влеяет (можно канечно и у брать)... Я читал что есть процедура WriteConponentReg вроде так она в DFM записывает но чето у меня с неи ничего не получилось....
PM MAIL ICQ   Вверх
WaReZMEN
Дата 21.3.2007, 03:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Народ ну неужеле никто не сталкивался?
PM MAIL ICQ   Вверх
Bose
Дата 21.3.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

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



Видимо никто.

К слову мне приходилось "встраивать" PopupMenu в грид, но пункты я изначально создавал в Run-time. 

PM MAIL WWW Skype   Вверх
WaReZMEN
Дата 22.3.2007, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Жаль канечно...

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

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

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

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

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


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

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


 




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


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

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