qt: implement native cut, copy, paste for edit and descendants

git-svn-id: trunk@26481 -
This commit is contained in:
paul 2010-07-06 11:53:10 +00:00
parent 321a2f3d30
commit c371775065
2 changed files with 117 additions and 1 deletions

View File

@ -69,8 +69,10 @@ type
{ IQtTextEdit }
{ IQtEdit }
IQtEdit = interface
['{035CA259-4442-4E82-9E70-96A114DD3BC6}']
['{035CA259-4442-4E82-9E70-96A114DD3BC6}']
function getMaxLength: Integer;
function getSelectionStart: Integer;
function getSelectionLength: Integer;
@ -80,6 +82,9 @@ type
procedure setReadOnly(const AReadOnly: Boolean);
procedure setSelection(const AStart, ALength: Integer);
procedure setBorder(const ABorder: Boolean);
procedure Cut;
procedure Copy;
procedure Paste;
procedure Undo;
end;
@ -652,6 +657,9 @@ type
procedure setReadOnly(const AReadOnly: Boolean);
procedure setSelection(const AStart, ALength: Integer);
procedure setText(const AText: WideString); override;
procedure Cut;
procedure Copy;
procedure Paste;
procedure Undo;
public
procedure AttachEvents; override;
@ -696,6 +704,9 @@ type
procedure setReadOnly(const AReadOnly: Boolean);
procedure setSelection(const AStart, ALength: Integer);
procedure setTabChangesFocus(const AValue: Boolean);
procedure Cut;
procedure Copy;
procedure Paste;
procedure Undo;
public
procedure AttachEvents; override;
@ -793,6 +804,9 @@ type
procedure setMaxLength(const ALength: Integer);
procedure setReadOnly(const AReadOnly: Boolean);
procedure setSelection(const AStart, ALength: Integer);
procedure Cut;
procedure Copy;
procedure Paste;
procedure Undo;
public
FList: TStrings;
@ -854,6 +868,9 @@ type
procedure setEchoMode(const AMode: QLineEditEchoMode);
procedure setMaxLength(const ALength: Integer);
procedure setSelection(const AStart, ALength: Integer);
procedure Cut;
procedure Copy;
procedure Paste;
procedure Undo;
public
function getValue: Double; virtual; abstract;
@ -6059,6 +6076,21 @@ begin
QLineEdit_setText(QLineEditH(Widget), @AText);
end;
procedure TQtLineEdit.Cut;
begin
QLineEdit_cut(QLineEditH(Widget));
end;
procedure TQtLineEdit.Copy;
begin
QLineEdit_copy(QLineEditH(Widget));
end;
procedure TQtLineEdit.Paste;
begin
QLineEdit_paste(QLineEditH(Widget));
end;
procedure TQtLineEdit.Undo;
begin
QLineEdit_undo(QLineEditH(Widget));
@ -6328,6 +6360,21 @@ begin
QTextEdit_setTabChangesFocus(QTextEditH(Widget), AValue);
end;
procedure TQtTextEdit.Cut;
begin
QTextEdit_cut(QTextEditH(Widget));
end;
procedure TQtTextEdit.Copy;
begin
QTextEdit_copy(QTextEditH(Widget));
end;
procedure TQtTextEdit.Paste;
begin
QTextEdit_paste(QTextEditH(Widget));
end;
procedure TQtTextEdit.Undo;
begin
QTextEdit_undo(QTextEditH(Widget));
@ -7062,6 +7109,24 @@ begin
LineEdit.setSelection(AStart, ALength);
end;
procedure TQtComboBox.Cut;
begin
if LineEdit <> nil then
LineEdit.Cut;
end;
procedure TQtComboBox.Copy;
begin
if LineEdit <> nil then
LineEdit.Copy;
end;
procedure TQtComboBox.Paste;
begin
if LineEdit <> nil then
LineEdit.Paste;
end;
procedure TQtComboBox.Undo;
begin
if LineEdit <> nil then
@ -7652,6 +7717,24 @@ begin
end;
end;
procedure TQtAbstractSpinBox.Cut;
begin
if LineEdit <> nil then
QLineEdit_cut(LineEdit);
end;
procedure TQtAbstractSpinBox.Copy;
begin
if LineEdit <> nil then
QLineEdit_copy(LineEdit);
end;
procedure TQtAbstractSpinBox.Paste;
begin
if LineEdit <> nil then
QLineEdit_paste(LineEdit);
end;
procedure TQtAbstractSpinBox.Undo;
begin
if LineEdit <> nil then

View File

@ -151,6 +151,9 @@ type
class procedure SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer); override;
//class procedure SetPasswordChar(const ACustomEdit: TCustomEdit; NewChar: char); override;
class procedure Cut(const ACustomEdit: TCustomEdit); override;
class procedure Copy(const ACustomEdit: TCustomEdit); override;
class procedure Paste(const ACustomEdit: TCustomEdit); override;
class procedure Undo(const ACustomEdit: TCustomEdit); override;
end;
@ -898,6 +901,36 @@ begin
QtEdit.setSelection(AStart, NewLength);
end;
class procedure TQtWSCustomEdit.Cut(const ACustomEdit: TCustomEdit);
var
Widget: TQtWidget;
QtEdit: IQtEdit;
begin
Widget := TQtWidget(ACustomEdit.Handle);
if Supports(Widget, IQtEdit, QtEdit) then
QtEdit.Cut;
end;
class procedure TQtWSCustomEdit.Copy(const ACustomEdit: TCustomEdit);
var
Widget: TQtWidget;
QtEdit: IQtEdit;
begin
Widget := TQtWidget(ACustomEdit.Handle);
if Supports(Widget, IQtEdit, QtEdit) then
QtEdit.Copy;
end;
class procedure TQtWSCustomEdit.Paste(const ACustomEdit: TCustomEdit);
var
Widget: TQtWidget;
QtEdit: IQtEdit;
begin
Widget := TQtWidget(ACustomEdit.Handle);
if Supports(Widget, IQtEdit, QtEdit) then
QtEdit.Paste;
end;
class procedure TQtWSCustomEdit.Undo(const ACustomEdit: TCustomEdit);
var
Widget: TQtWidget;