Текущий архив: 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