Конференция "Компоненты" » Создание компонента. MDI приложение.
 
  • DimaBr © (24.07.08 16:49) [20]

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


    Перекройте ValidateContainer панели

    procedure TComponent.InsertComponent(AComponent: TComponent);
    begin
     AComponent.ValidateContainer(Self);

  • Медвежонок Пятачок © (24.07.08 16:49) [21]
    мне же нужно, чтобы если я кидаю компонент например на панель, компонент не позволил бы мне этого сделать...

    От кого наследуемся и зачем? Если не хотим попасть на панель.
  • Медвежонок Пятачок © (24.07.08 16:54) [22]
    судя по тексту штука невизуальная. но отнаследована зачем-то от тконтрола.
  • Медвежонок Пятачок © (24.07.08 17:03) [23]
    один экземпляр на форме контрлируется конструктором через оунера.
    оунер чтоб был мдичайлд - там же.
    чтобы не попасть на панель - принудительно ставить парентом оунера или вообще наследваться от ткомпонент.

    все три задачи решены.
  • Decoding (24.07.08 17:13) [24]
    Компонент наследуется от TCustomPanel.

    то, что Owner будет формой, а Parent nil, я уже установил опытным путем)


    > Перекройте ValidateContainer панели


    Сейчас попробую
  • Decoding (24.07.08 17:15) [25]

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

    Это с чего такие выводы?????


    > ...для того, чтобы "нажать" на панели нужную кнопку....


    визуальный компонент
  • Медвежонок Пятачок © (24.07.08 17:20) [26]
    ну хорошо.
    а почему я как пользователь компонента не должен мочь положить визуальное на панель?
  • Decoding (24.07.08 17:56) [27]
    теоретически можешь... но в MDI приложениях в этом все равно нет смысла...
  • Decoding (24.07.08 18:05) [28]
    Первый вопрос решен через переопределение метода SetParent... осталось 2 и 3... Есть идеи?
  • Медвежонок Пятачок © (24.07.08 18:44) [29]
    через канструктор. сказали же уже
  • Decoding (24.07.08 20:26) [30]
    2 вопрос закрыт, спасибо всем, кто откликнулся...
    если будут идеи по поводу 3-его вопроса, также буду благодарен
  • Сергей М. © (24.07.08 20:34) [31]

    > Есть ряд задач (3 штуки)


    Спасибо. Мы тут, валенки, совсем разучились считать "штуки".


    > во время разработки приложения этот компонент можно было
    > "бросить" только на форму со стилем  FormStyle = MDIForm


    Ну , положим, реализовал ты  это.
    А потом тупой юзер взял да изменил ФормСтайл на иной стиль.
    Как тебе эти грабли ?)
  • Decoding (24.07.08 23:51) [32]

    > Спасибо. Мы тут, валенки, совсем разучились считать "штуки".

    Ну никак не мог за это не зацепиться...


    > Как тебе эти грабли ?)

    да, что есть, то есть. упустил этот момент из виду. не страшно, немного изменю логику...

    DimaBr
    не получается реализовать перехват сообщения CM_TEXTCHANGED в компоненте. Если это (procedure TextChanged(var Message: TMessage); message CM_TEXTCHANGED;) написать в самом проекте, то все работает, но тоже самое в компоненте работать отказывается... и хотя в инете подобных примеров немало, пока непонимаю, что я такого наделал, что у меня не работает.
  • DimaBr © (25.07.08 09:01) [33]

    >  написать в самом проекте, то все работает, но тоже самое
    > в компоненте работать отказывается...

    Покажите код
  • Thunderchild (25.07.08 09:03) [34]
    2) Вопрос примерно из той же серии, что и первый. Нужно, чтобы на форме мог быть только один подобный компонент. Каким способом этого можно добиться?

    А почему не один во всем приложении... Может проще так:

    ...
    var
     flag: boolean;
    ...
    constructor TMDIPanel.Create(AOwner: TComponent);
    begin
    ...
      if flag then
        raise Exception.Create('')
      else
       flag := true;
    end;

    ...

    destructor TMDIPanel.Destroy;
    begin
      flag := False;
    ...
    end;
  • Сергей М. © (25.07.08 12:59) [35]

    > Ну никак не мог за это не зацепиться.


    )

    Да просто, извини уж, к месту вспомнилось:

    "Три штуки. Размер сорок два, сорок три, сорок пять" (В) Василий Алибабаевич
  • Decoding (25.07.08 14:29) [36]
    С третьим вопросом выкрутился через WM_MDIREFRESHMENU.
    Спасибо всем, кто проявил участие и помогал.
    Кому интересно, что получается, скачайте демку http://slil.ru/26008874
  • Interior (26.07.08 18:36) [37]
    Не качается оттуда что-то.
    Может выложишь на webfile.ru ?
  • Interior (26.07.08 18:37) [38]
    У меня вообще-то есть компонент на эту тему.
    Напиши мыло - скину
  • Decoding (27.07.08 14:38) [39]
    http://webfile.ru/2117620
    скинь сюда - decoding@yandex.ru

    не все с компонентом проходит гладко... есть вопросы, и если сам не решу их в ближайшее время, снова обращусь за помощью, т.ч. тема пока не закрыта
 
Конференция "Компоненты" » Создание компонента. MDI приложение.
Есть новые Нет новых   [134465   +63][b:0.001][p:0.001]