Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: [help] BCB 5: наследование в dfm  (Прочитано 8031 раз)
0 Пользователей и 1 Гость смотрят эту тему.
baranov.eu
Интересующийся

lv
Offline Offline

« : 13-01-2009 15:26 » 

дано:
2 dfm файла. в родителе есть контрол грид (главный). в потомке требуется этот грид вставить в таб контрол.... и вот это не проходит. Жаль
подозреваю, что есть где-то какая-то фигня, которую я упускаю.

должно получиться примерно так?
Код:
  object Sheet: TPageControl [3]
    Left = 184
    Top = 120
    Width = 1083
    Height = 650
    Hint = '2'
    ActivePage = List
    TabOrder = 1
    object List: TTabSheet
      Hint = '1'
      Caption = 'List'
      inherited Grid: TIB_Grid
        Width = 1280
        Height = 889
        TabOrder = 3
      end
    end
    object Edit: TTabSheet
      Caption = 'Details'
    end
  end

я вручную так делаю, но борланд меняет все обратно.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 13-01-2009 15:33 » 

Хм... Никогда не делал это вруяную - как-то не было нужды. Что это за "inherited"? Что от чего наследуется - не понятна логика.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baranov.eu
Интересующийся

lv
Offline Offline

« Ответ #2 : 13-01-2009 15:40 » 

inherited - это и есть наследуемое свойство....
object - создается в этой форме.

Улыбаюсь яб тоже руками не делал. но не заново же форму рисовать, если в рожекте 8-летней давности все уже реализовано.

в редакторе формы тоже не получается (почемуто)

Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 13-01-2009 15:44 » 

baranov.eu, что не получается в редакторе?

Offtopic:
На время отладки я бы ограничивал доступ к сайту в .htaccess...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baranov.eu
Интересующийся

lv
Offline Offline

« Ответ #4 : 13-01-2009 16:04 » 

попробую подробнее Улыбаюсь
1. имеется форма BaseForm

Код:
object Panel1: TPanel
   object Grid: TIB_Grid
   object CoolBar1: TCoolBar
    object ToolBar1: TToolBar
bla-bla-bla

2. DerivedForm
необходимо чтобы грид (object Grid: TIB_Grid) наследуемый от BaseForm отображался в таб контроле.
тоесть я попробовал сделать так:
Код:
  inherited Panel1: TPanel
  inherited CoolBar1: TCoolBar
    inherited ToolBar1: TToolBar
  object Sheet: TPageControl [3]
    Left = 184
    Top = 120
    Width = 1083
    Height = 650
    Hint = '2'
    ActivePage = List
    TabOrder = 1
  inherited Grid: TIB_Grid
    Width = 1280
    Height = 889
    TabOrder = 3
  end   
    object List: TTabSheet
      Hint = '1'
      Caption = 'List'
    end
    object Edit: TTabSheet
      Caption = 'Details'
    end
  end

3. вот это не отображается нормально. никакие перетаскивания и прочее не работают (удалить и вставить тож не получается - типа это в базовом классе, его и редактируй)

Записан
baranov.eu
Интересующийся

lv
Offline Offline

« Ответ #5 : 13-01-2009 16:22 » 



Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 13-01-2009 16:41 » 

Редактор позволяет наследовать только форму целиком - не отдельные компоненты и это логично: форма == класс, а компонент на форме == внешний класс + присвоение значений свойствам.

Если хочешь сделать новый компонент, наследуемый от внешнего: Component -> New.
« Последнее редактирование: 13-01-2009 16:44 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baranov.eu
Интересующийся

lv
Offline Offline

« Ответ #7 : 14-01-2009 07:19 » 

Улыбаюсь ну я вроде так и делал...
- наследуем все
- добавляем новые объекты

но видимо таки придется все целиком переделывать... ой как это нехоршо Улыбаюсь


Записан
zubr
Команда клуба

by
Offline Offline
Пол: Мужской

« Ответ #8 : 14-01-2009 10:22 » 

1. Выделяем нужный грид
2. Выполняем команду меню Edit->Cut
3. Выделяем нужный табконтрол
4. Делаем команду меню Edit->Paste
Записан
baranov.eu
Интересующийся

lv
Offline Offline

« Ответ #9 : 14-01-2009 11:00 » 

1. Выделяем нужный грид
2. Выполняем команду меню Edit->Cut
3. Выделяем нужный табконтрол
4. Делаем команду меню Edit->Paste

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


Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 14-01-2009 13:19 » 

baranov.eu, не трогай dfm - делай в редакторе... Если ты не понимаешь, что происходит, то программа и подавно не поймет.

Давай с самого начала: какая цель?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baranov.eu
Интересующийся

lv
Offline Offline

« Ответ #11 : 14-01-2009 13:28 » 

baranov.eu, не трогай dfm - делай в редакторе... Если ты не понимаешь, что происходит, то программа и подавно не поймет.

Давай с самого начала: какая цель?

Я осуществляю саппорт старого (2000-01гг) прожекта. стоит задача расширить функционал 1 из форм.
Сделать вместо представления только в виде списка закладку details.

учитывая все обстоятельства я не свободен в выборе формы представления. тоесть у меня business requirements на 15 листах, где все описано как это выглядит. (вариант да тут все сделать простенько по клику чтоб открывалось не прокатит - есть эскизы MUST be, в начале идет расшифрофка как понимать термин MUST). но это так, лирика... типа пожаловался...

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

есть 2 базовые формы (я вно появившиеся с промежутком 2-3 года).
1. с табами (условно назовем BaseMasterForm)
2. без табов (BaseGridForm)

TRYOUT 1:
от 2. я пытался сделать... не получается требования не позволяют наледовать от нее

TRYOUT 2:
скопировал в другую (BaseTabForm)с надеждой провести реинжинеринг (потом, каданить, если время буде), убрал все лишнее, но объем изменений боьшой получается, глюки, у менялиба строится, но не запускается с бредовыми ошибками (не найден класс TLabel)

TRYOUT 3:
собственно сейчас пытаюсь реализовать: добавить табы к BaseGridForm


общий смысл понятен со скриншотов наверное...

ругаюсь на борланд, но тогда время такое было.... в.5 это жесть (опять же на другие не могу переходить, см. преюдию)

ПС: предупреждали меня.....

« Последнее редактирование: 14-01-2009 13:35 от baranov.eu » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 14-01-2009 13:40 » 

Ну, скажем, ситуация не уникальная: я тоже поддерживаю такую же древнюю программу (только перенес с BCB5 на BCB6), в ней около 80-и форм и еще куча наворотов.

Самое главное: цель так и не ясна.

Личная просьба: постарайся знаки препинания ставить - время на прочтение и осмысление больше уходит.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baranov.eu
Интересующийся

lv
Offline Offline

« Ответ #13 : 14-01-2009 13:51 » 

Самое главное: цель так и не ясна.

Личная просьба: постарайся знаки препинания ставить - время на прочтение и осмысление больше уходит.

Ну скорее всего дело в заглавных буквах. Знаки препинания примерно ставлю.

должно получиться примерно такЖ
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 14-01-2009 14:14 » 

baranov.eu, давай так: ты ничего не писал, а мы ничего не читали. Попробуй объяснить словами - приведенные скрины не говорят, что ты хочешь сделать (гадать и разбираться в неясном изложении тоже не хочется).

1. Что надо сделать? (Нет, не что куда перетащить, а что надо чтобы было --- цель какая).
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baranov.eu
Интересующийся

lv
Offline Offline

« Ответ #15 : 14-01-2009 14:28 » 

baranov.eu, давай так: ты ничего не писал, а мы ничего не читали. Попробуй объяснить словами - приведенные скрины не говорят, что ты хочешь сделать (гадать и разбираться в неясном изложении тоже не хочется).

1. Что надо сделать? (Нет, не что куда перетащить, а что надо чтобы было --- цель какая).

ОФФ: ребята, я чутка в шоке... вокруг столько проблем, прямо ппц - и читать тяжело и понять невозможно, подозреваю писать тож лень.

Я не очень понимаю, на каком уровне цель интересует. есть ее описание на 15 стр, тз называется... это я не могу публиковать...
скриншоты - самое наглядное что могу придумать, тоже непонятно....

я подозреваю, что это просто невозмножно сделать, а объяснить почему - сложно. И начинается пляска с бубном.

итак, надо:
наследуя от базовогй формы (http://baranov.eu/test/base.JPG) получить http://www.baranov.eu/test/Target.JPG
причем Грид, который в базовой занимает цетр, должен быть в 1-м табе (Browse).

- почему наследовать?
-- там много кода с логикой, не хочется копипастить.
-- соответствует ранее принятой концепции.

хотя конечно плюну на все сделаю новую форму...


Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 14-01-2009 16:01 » 

baranov.eu, уже выше обсудили - не допустимо это. Хочешь много логики - создавай отдельный компонент, в который помещай логику, а потом размещай компонент на нужных формах.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baranov.eu
Интересующийся

lv
Offline Offline

« Ответ #17 : 14-01-2009 16:15 » 

baranov.eu, уже выше обсудили - не допустимо это. Хочешь много логики - создавай отдельный компонент, в который помещай логику, а потом размещай компонент на нужных формах.

наверное так и придется далать. Хотя это очень неприятный процесс потому что ЭТО нужно понять, прежде чем копировать, а не все что 1 программист напишет, другой понять может быстро Улыбаюсь

ладно, спасибо всем Улыбаюсь


 
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 14-01-2009 20:45 » 

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

Вот сейчас у тебя есть возможность подумать о том, как написать код так, чтобы в будущем его можно было легче использовать повторно, чтобы он был более универсальным.
Я не стал делать свои классы - я сделал библиотеку функций автоматизации работы с отдельными типами компонент и набор универсальных диалогов. Может это не академично и притянуто под условия данного ПО, но с тех пор писать новые модули стало легче и GUI стал дружественнее.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baranov.eu
Интересующийся

lv
Offline Offline

« Ответ #19 : 15-01-2009 07:27 » 

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

Вот сейчас у тебя есть возможность подумать о том, как написать код так, чтобы в будущем его можно было легче использовать повторно, чтобы он был более универсальным.
Я не стал делать свои классы - я сделал библиотеку функций автоматизации работы с отдельными типами компонент и набор универсальных диалогов. Может это не академично и притянуто под условия данного ПО, но с тех пор писать новые модули стало легче и GUI стал дружественнее.

на самом деле очень дельфыевый подход Улыбаюсь по моей схеме работы на рефакторинг времени не выделяется... хотя конечно стараюсь...

но как правило изменения точечные все-таки.

Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines