Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.13;
Скачать: CL | DM;

Вниз

Буфер обмена, обмен данными между главной и дочерними формами   Найти похожие ветки 

 
Demondelphi ©   (2007-03-13 11:55) [0]

Здравствуйте! Может мой вопрос будет очень простым, если что извините.

Вопрос:
Как можно организовать вырезание/копирование/вставку между главной и дочерней формой!

Например:
Имеются две формы (соответственно, Форма 1 -гланая, Форма 2 - дочерняя)

На форме 2 (далее F2)располагаются компонеты:
LabeledEdit1 и LabeledEdit2

На форме 1 (Далее F1)располагается MenuBar1
Соответственно в ней Item Правка и Sybmenu Вырезать/Копировать/Вставить

Суть вопроса такова:
Т.Е. набранный текст в F2.LabeledEdit1, выделяем, переходим на F1 и нажимаем Копировать, далее курсор ставим в F2.LabeledEdit2, переходим на F1 и нажимаем Вставить, соответственно туда должен вставиться скопированный текст...
Как это сделать?...


 
Сергей М. ©   (2007-03-13 11:58) [1]


> Как это сделать?


см. справку по объекту Clipboard


 
Demondelphi ©   (2007-03-13 12:00) [2]

а можно пример? Как в моём случае


 
ЮЮ ©   (2007-03-13 12:04) [3]

Берем компоент TActionList, добавляем стандартные  TEditCopy и TEditPaste и назначаем эти TAction-ы соответствующим пунктам MenuBar-а


 
Demondelphi ©   (2007-03-13 13:04) [4]

ЮЮ ©   (13.03.07 12:04) [3]
Берем компоент TActionList, добавляем стандартные  TEditCopy и TEditPaste и назначаем эти TAction-ы соответствующим пунктам MenuBar-а

а давай представим что у тебя их так скажем штук 50 и ты к каждому их будешь прописывать, а я тебе лучше способ предложу

******
if ActiveControl is tLabeledEdit
then tLabeledEdit (ActiveControl).CopyToClipboard;
******
он то точно работает но главная форма почему-то на него не реагирует


 
Сергей М. ©   (2007-03-13 13:15) [5]


> давай представим что у тебя их так скажем штук 50


Да хоть "штук 150 мульёнов" !

Разницы нет никакой)


> главная форма почему-то на него не реагирует


На кого "его" ?


 
ЮЮ ©   (2007-03-13 13:17) [6]

> а давай представим что у тебя их так скажем штук 50 и ты
> к каждому их будешь прописывать, а я тебе лучше способ предложу


Кого 50? Главная форма одна, TActionList на ней - один, MenuBar на ней - один.


> ******
> if ActiveControl is tLabeledEdit
> then tLabeledEdit (ActiveControl).CopyToClipboard;
> ******
> он то точно работает но главная форма почему-то на него
> не реагирует


Это из метода какой формы?


 
Demondelphi ©   (2007-03-13 14:06) [7]

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

Имеются две формы (соответственно, Форма 1 -гланая, Форма 2 - дочерняя)

На форме 2 (далее F2)располагаются компонеты:
LabeledEdit1 и LabeledEdit2

На форме 1 (Далее F1)располагается MenuBar1
Соответственно в ней Item Правка и Sybmenu Вырезать/Копировать/Вставить

Суть вопроса такова:
Т.Е. набранный текст в F2.LabeledEdit1, выделяем(вручную), переходим на F1 и нажимаем Копировать, далее курсор ставим в F2.LabeledEdit2, переходим на F1 и нажимаем Вставить, соответственно туда должен вставиться скопированный текст...


 
Сергей М. ©   (2007-03-13 14:13) [8]


> Demondelphi ©   (13.03.07 14:06) [7]


Мож тебе книжку по Делфи какую-нить умную почитать для затравки. а ?)


 
DiamondShark ©   (2007-03-13 23:00) [9]


> Суть вопроса такова:
> Т.Е. набранный текст в F2.LabeledEdit1, выделяем(вручную),
>  переходим на F1 и нажимаем Копировать, далее курсор ставим
> в F2.LabeledEdit2, переходим на F1 и нажимаем Вставить,
> соответственно туда должен вставиться скопированный текст.
> ..

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


 
Жуков Олег   (2007-03-14 07:17) [10]

Почему шизофреническим? "Форма 1 -гланая, Форма 2 - дочерняя". Всё логично. Все MDI applications так работают (и даже некоторые SDI (Delphi прежних версий к примеру)).

To Demondelphi
Если это MDI - то у формы есть ActiveMdiChild (или что-то вроде).
Иначе наверное запоминать ссылку на последнюю активную дочернюю форму.


 
Demondelphi ©   (2007-03-14 08:26) [11]


> DiamondShark ©   (13.03.07 23:00) [9]
>
> > Суть вопроса такова:
> > Т.Е. набранный текст в F2.LabeledEdit1, выделяем(вручную),
>
> >  переходим на F1 и нажимаем Копировать, далее курсор ставим
>
> > в F2.LabeledEdit2, переходим на F1 и нажимаем Вставить,
>  
> > соответственно туда должен вставиться скопированный текст.
>
> > ..
>
> Я знаю, как это сделать, но не скажу из соображений гуманного
> отношения к юзерам, которым предстоит пользоваться приложением
> с таким шизофреническим интерфейсом.

проще скажи не знаешь 8-). Да даже возьми тот же любой текстовик который работает с несоколькими окнами.... Принцип тотже самый, главная одна, остальные дочки...

А кто нибудь вообще сталкивался с такой проблемой??? Хелп плз...


 
zap8   (2007-03-14 09:12) [12]

Наверное LabeledEdit теряет фокус поэтому не
происходит вставка текста, хотя я не уверен, т.к. до конца не понял
что и куда.


 
Demondelphi ©   (2007-03-14 10:46) [13]

из буфера главной формы в дочернюю LabeledEdit2

т.е. коротко, так прочитайте вопрос внимательно
Внимательно:
Есть две формы главная и дочерняя
1)на главной располагаются две кнопки, кнопка  "копировать" и кнопка "вставить";
2)на дочерней два LabeledEdit, соответственно LabeledEdit1 и LabeledEdit2;
теперь:
3) в LabeledEdit1 дочерней формы в которой имеется введённый текст, мы выделяем произвольное количество символов.
4)теперь нажимем "копировать" на главной форме (т.е. следуя из пункта 3 в буфер обмена должен поместиться выделенный текст из  LabeledEdit1 дочерней формы);
5)далее в LabeledEdit2 дочерней формы мы ставим курсор;
6)нажимаем теперь "вставить" на главной форме;
7)в LabeledEdit2 дочерней формы должен вставиться текст (т.е. см. пункт 4)
вот как можно это сделать?


 
Demondelphi ©   (2007-03-14 10:48) [14]

уточнение небольшое представьте что LabeledEdit-ов у вас штук 100 :-)


 
Сергей М. ©   (2007-03-14 11:46) [15]


> Demondelphi ©   (14.03.07 10:48) [14]


Да какая разница, "штук 100" или "один штук" или "тыща штук" ?

Принцип-то один и тот же ..


 
Demondelphi ©   (2007-03-14 12:00) [16]

выход из данной ситуевины в виде простого кода можете кто-нибудь предложить. плз...


 
Сергей М. ©   (2007-03-14 12:20) [17]


> Demondelphi ©   (14.03.07 12:00) [16]


> в виде простого кода


Тебе ЧТО КОНКРЕТНО непонятно ?


 
Demondelphi ©   (2007-03-14 13:16) [18]

КАК КОПИРОВАНИЕ И ВСТАВКУ МЕЖДУ НИМИ СДЕЛАТЬ, ЕСЛИ МОЖНО НА ПРИМЕРЕ КОДА ПОКАЖИТЕ....


 
Сергей М. ©   (2007-03-14 13:58) [19]

Копирование текста в БО:

with Clipboard do begin
Open;
try
   SetTextBuf(PChar(SomeLabeledEdit.Text));
finally
 Close;
end;
end;

Вставка текста из БО:

with Clipboard do begin
Open;
try
  SomeOtherLabeledEdit.Text := AsText;
finally
 Close;
end;
end;


 
Demondelphi ©   (2007-03-15 08:29) [20]

Подсказали мне:
ответ такой

control := Form3.ActiveControl;
 if Assigned(control) and (control is TLabeledEdit)
 then (control as TLabeledEdit).CopyToClipboard();


 
zap8   (2007-03-15 08:47) [21]

>control := Form3.ActiveControl;

Это не есть - универсальная вставка, а только вставка для Form3

код расходится с вопросом

Вопрос:
Как можно организовать вырезание/копирование/вставку между главной и дочерней формой! Т.е. из вопроса вытекает, что, что то собираемся
вырезать и т.д. и из главной формы.



Страницы: 1 вся ветка

Текущий архив: 2007.05.13;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.042 c
2-1176895225
Ксандр
2007-04-18 15:20
2007.05.13
хеш функция


3-1171889776
mefisto
2007-02-19 15:56
2007.05.13
Проблема с печатью стариц на Fast report 4


1-1173948393
tytus
2007-03-15 11:46
2007.05.13
Как сделать OnTimer в RunTime в DLL?


2-1177403471
artem.gor
2007-04-24 12:31
2007.05.13
Помогите написать процедуры


2-1177493618
I-New
2007-04-25 13:33
2007.05.13
Цифровая подпись