Главная страница
    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.5 MB
Время: 0.03 c
2-1177431752
Aen Seidhe
2007-04-24 20:22
2007.05.13
Разные цвета текста


1-1174037474
Mapogep
2007-03-16 12:31
2007.05.13
Отображение карты


2-1176971322
Lewka
2007-04-19 12:28
2007.05.13
работа с базой данных Access


15-1176788261
Riply
2007-04-17 09:37
2007.05.13
Интернет кафе с программистским уклоном :)


2-1177277659
***mikle***
2007-04-23 01:34
2007.05.13
Как посоветуете реализовать





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский