Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизTImageList, ссылка с другой формы Найти похожие ветки
← →
ES (2012-10-18 19:32) [0]Delphi 7, на одной форме лежит TImageList, а другая форма хочет использовать этот TImageList в качестве картинок для своих контролов (ну например toolbar).
В design-time все хорошо, указываем зависимости, тулбар спокойно использует картинки с ImageList расположенного на другой форме.
Но в run-time насколько я понял картинки отображаются только тогда, когда создан хотя бы один экземпляр той формы, на которой лежим imagelist.
Вопросы:
1) можно ли обойтись без создания формы, на которой лежит ImageList?
2) если первое невозможно, то можно как-то понять, что на ImageList есть ссылки? И если ссылки есть, то создавать тогда экземпляр формы, если ссылок нету - не создавать?
Самый крутой вариант - создавать тогда, когда ссылки появились. Уничтожать - когда ссылки все сняты (как вариант - уничтожена та форма, которая ссылалась).
← →
Плохиш © (2012-10-18 19:49) [1]
> 1) можно ли обойтись без создания формы, на которой лежит
> ImageList?
нет
> 2) если первое невозможно, то можно как-то понять, что на
> ImageList есть ссылки? И если ссылки есть, то создавать
> тогда экземпляр формы, если ссылок нету - не создавать?
программист нужен.
← →
ES (2012-10-18 19:54) [2]
>
> программист нужен.
не понял
← →
Dennis I. Komarov © (2012-10-18 20:00) [3]TForm1 есть потомок TForm со своими тараканами в interface...
← →
Ega23 © (2012-10-18 20:10) [4]Для таких случаев существует DataModule. Пихай туда свой ImageList, создавай его (DataModule) первым в проекте и ссылайся на этот ImageList из любого экземпляра любой формы.
← →
ES (2012-10-18 22:43) [5]парни, как насчет вопроса номер 2) ?
← →
Игорь Шевченко © (2012-10-18 22:50) [6]
> 2) если первое невозможно, то можно как-то понять, что на
> ImageList есть ссылки? И если ссылки есть, то создавать
> тогда экземпляр формы, если ссылок нету - не создавать?
>
> Самый крутой вариант - создавать тогда, когда ссылки появились.
> Уничтожать - когда ссылки все сняты (как вариант - уничтожена
> та форма, которая ссылалась).
А зачем ?
То есть, сделать конечно можно, описав интерфейс, реализуя его, переписав у формы-наследника _AddRef и _Release, заставив их работать отлично от реализации в TComponent, но зачем ?
DataModule для подобных вещей предназначен и гораздо проще.
← →
ES (2012-10-18 22:58) [7]
> А зачем ?
ну... попытаюсь объяснить...
Дело в том, что постепенно вырисовывается модуль аля uVisualStandart, в который включаются всякие штуки, позволяющие унифицировать интерфейс, в том числе разных приложений. То есть, в результате это модуль общего назначения, подцепляемый к разным проектам.
Поэтому сам модуль в общем-то плохо представляет - а использует ли его вообще кто-то. Пока всё удавалось сделать на динамке, то есть используются фишки модуля - там живут нужные экземпляры классов, перестают использоваться - все уничтожается. В принципе, конечно, при современных ресурсах можно понасоздавать все хотя бы в одном экземпляре и не париться.
Может, так и поступлю...
← →
Игорь Шевченко © (2012-10-18 23:14) [8]
> В принципе, конечно, при современных ресурсах можно понасоздавать
> все хотя бы в одном экземпляре и не париться.
Наиболее разумно
← →
Юрий Зотов © (2012-10-19 00:07) [9]> ES
Может быть, нужен синглтон, автоматически создаваемый по требованию?
unit Unit2;
interface
uses
SysUtils, Classes, Forms;
type
TMyDataModule = class(TDataModule)
public
class function NewInstance: TObject; override;
procedure FreeInstance; override;
end;
function GetMyDataModule: TMyDataModule;
implementation
{$R *.dfm}
var
_MyDataModule: TMyDataModule = nil;
function GetMyDataModule: TMyDataModule;
begin
if _MyDataModule = nil then
_MyDataModule := TMyDataModule.Create(Application);
Result := _MyDataModule
end;
{ TMyDataModule }
procedure TMyDataModule.FreeInstance;
begin
inherited;
_MyDataModule := nil;
end;
class function TMyDataModule.NewInstance: TObject;
begin
if _MyDataModule = nil then
_MyDataModule := TMyDataModule(inherited NewInstance);
Result := _MyDataModule
end;
end.
← →
ES (2012-10-19 00:36) [10]
> нужен синглтон, автоматически создаваемый по требованию
забавное сочетание слов "автоматически создаваемый" и "по требованию" ))
Да в принципе да, что-то типа такого. Просто я хотел это делать только если есть реальные ссылки на компонент ImageList"а, но поскольку определить это я не понимаю как, то можно просто на инициализации модуля создавать экземпляр формы.
Насчет по требованию - не слишком удобно. Конечному потребителю помимо прописывания ссылки на ImageList еще нужно знать, что нужно обязательно дернуть некий метод. Потому что выглядит это так - в design-time все хорошо, запускаем run-time - а там иконок тупо нету, хотя нигде ни на что не ругается. По крайней мере я говорю про настройку cxBarManager (или как-то так, в общем тулбар от девок). Я часа полтора убил, чтобы понять почему это в design-time отлично вижу кнопки с картинками, а при запуске программы остаются только надписи.
← →
MsGuns © (2012-10-22 10:15) [11]>забавное сочетание слов "автоматически создаваемый" и "по требованию" ))
Ничего забавного. По крайней мере в контексте того, что Вы пытаетесь соорудить. ЮЗ показал просто как можно реализовать модель с единственным экземпляром объекта "общего назначения", который создается (автоматически) лишь при первом обращении из любого вызывающего модуля либо не создается вообще если таких вызовов не было.
В целом согласен с некоторой странностью постановки задачи. По тому, что вы тут написали, Вам нужна либо длл, либо ком-сервер, которые будут "обслуживать" интерфейсы по мере обращения к ним.
← →
ES (2012-10-22 13:00) [12]Отличное решение - вынести картинки ака TImageList в ком-сервер )))
← →
MsGuns © (2012-10-22 13:20) [13]Стесняюсь спросить, а какой смысл вообще в выносе одних картинок в некий отдельный "модуль" ?
← →
Ega23 © (2012-10-22 13:28) [14]
> Отличное решение - вынести картинки ака TImageList в ком-
> сервер )))
Между прочим, не вижу ничего смешного. :)
← →
Медвежонок Пятачок © (2012-10-22 13:51) [15]не, лучше в облако. ага.
← →
ES (2012-10-22 16:55) [16]
> Стесняюсь спросить, а какой смысл вообще
мой пост в этой ветке под номером [7]
← →
брат Птибурдукова (2012-10-22 16:57) [17]Не страдал бы дуркой, а воспользовался [4]+[9].
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.073 c