Форум: "Базы";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
Внизкак поймать момент когда DBGrid переходит в режим редактирования Найти похожие ветки
← →
Fast (2004-07-07 16:24) [0]Дело в том, что надо сделать тривиальную вешь - повешать попап с функциями копирования в вставления из буфера.
постаил попап написал функцию
var text:string;
begin
text:=(Form1.ActiveControl as TCustomDBGrid).SelectedField.Value;
Clipboard.SetTextBuf(pchar(text));
end;
Работает на ура только если не находимся в режиме редактирования записи.
И самое главное в режиме редактирования есть свой стандартный попар который я не хочу перекрывать.
Т.е. я вижу выход в том, что отменять мое меню для грида если она в режиме редактирования.
← →
Reindeer Moss Eater © (2004-07-07 16:26) [1]OnStateChange event (TDataSource)
← →
Sandman25 © (2004-07-07 16:26) [2]DBGrid.DataSource.DataSet.State in dsEditModes
← →
Соловьев © (2004-07-07 16:27) [3]var text:string;
begin
if (Form1.ActiveControl is TCustomDBGrid) and
((Form1.ActiveControl as TCustomDBGrid).DataSource.DataSet.State = dsBrowse)
then
text:=(Form1.ActiveControl as TCustomDBGrid).SelectedField.Value;
Clipboard.SetTextBuf(pchar(text));
end;
← →
Fast (2004-07-07 16:32) [4]не выйдет во время редактирования гида ActiveControl - не сам грид
← →
Соловьев © (2004-07-07 16:37) [5]
> не выйдет во время редактирования гида ActiveControl - не
> сам грид
но зато когда вызываешь попап должен он.
ну или тогда обрашайся по имени.
← →
Fast (2004-07-07 16:38) [6]я имею в виду что при редактировании ActiveControl - возвращает не grid, а видимо саму ячейку таблицы.
← →
Соловьев © (2004-07-07 16:39) [7]
> а видимо саму ячейку таблицы
та нет.
← →
Fast (2004-07-07 16:41) [8]но зато когда вызываешь попап должен он.
ну или тогда обрашайся по имени.
по имени совсем не хочется потому как таблиц на форме тьма и хотелось один попар на все
← →
Sandman25 © (2004-07-07 16:47) [9]type TFakeInplaceEdit = class(TInplaceEdit);
TFakeInplaceEdit(Form1.ActiveControl).Grid
← →
Fast (2004-07-07 17:04) [10]Решил :)
Гдяшишь кому пригодиться
procedure TForm1.Copy1Click(Sender: TObject);
var text:string;
begin
if not (Form1.ActiveControl is TCustomDBGrid) then
begin
SendMessage(Form1.ActiveControl.Handle,WM_COPY,0,0);
exit;
end;
text:=(Form1.ActiveControl as TCustomDBGrid).SelectedField.Value;
Clipboard.SetTextBuf(pchar(text));
end;
procedure TForm1.Paste1Click(Sender: TObject);
begin
if not (Form1.ActiveControl is TCustomDBGrid) then
begin
SendMessage(Form1.ActiveControl.Handle,WM_PASTE,0,0);
exit;
end;
(Form1.ActiveControl as TCustomDBGrid).DataSource.Edit;
(Form1.ActiveControl as CustomDBGrid).SelectedField.Value:=Clipboard.AsText;
end;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.031 c