Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Буфер обмена, обмен данными между главной и дочерними формами [D7, WinXP]


Страницы:   1 2

Demondelphi ©   (2007-03-13 11:55:00) 

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

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

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

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

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

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


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

>control := Form3.ActiveControl;

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

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

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


Demondelphi   (2007-03-15 08:29:00) [2]

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

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


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

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

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-14 13:16:00) [4]

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


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


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


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


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


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

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


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


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


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

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


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

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


Demondelphi   (2007-03-14 10:46:00) [9]

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

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


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

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


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


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

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

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


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

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

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


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


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

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


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


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


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


Demondelphi   (2007-03-13 14:06:00) [15]

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

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

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

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

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


ЮЮ   (2007-03-13 13:17:00) [16]

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


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


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


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


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


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


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

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


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


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


Demondelphi   (2007-03-13 13:04:00) [18]

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

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

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


ЮЮ   (2007-03-13 12:04:00) [19]

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


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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо