From f53bc8cfc6723d3d920dc3f344ce29fdccd8e517 Mon Sep 17 00:00:00 2001 From: mattias Date: Mon, 8 May 2006 08:19:08 +0000 Subject: [PATCH] qt intf: memo and edit Get/SetText from Giuliano Colla git-svn-id: trunk@9248 - --- lcl/interfaces/qt/qtprivate.pp | 8 ++- lcl/interfaces/qt/qtwscontrols.pp | 39 ++++++++++++++ lcl/interfaces/qt/qtwsstdctrls.pp | 84 ++++++++++++++++++++++++++++--- 3 files changed, 122 insertions(+), 9 deletions(-) diff --git a/lcl/interfaces/qt/qtprivate.pp b/lcl/interfaces/qt/qtprivate.pp index 08203ddaee..3be910ccf7 100644 --- a/lcl/interfaces/qt/qtprivate.pp +++ b/lcl/interfaces/qt/qtprivate.pp @@ -1690,6 +1690,7 @@ constructor TQtTextEdit.Create(const AWinControl: TWinControl; var Parent: QWidgetH; Str: WideString; + begin // Initializes the properties LCLObject := AWinControl; @@ -1699,12 +1700,17 @@ begin WriteLn('Calling QTextEdit_create'); {$endif} Parent := TQtWidget(AWinControl.Parent.Handle).Widget; - Str := WideString((AWinControl as TCustomMemo).Lines.Text); + Str := (AWinControl as TCustomMemo).Text; Widget := QTextEdit_create(@Str, Parent); // Sets itī s initial properties QWidget_setGeometry(Widget, AWinControl.Left, AWinControl.Top, AWinControl.Width, AWinControl.Height); + QTextEdit_setReadOnly(QTextEditH(Widget),(AWinControl as TCustomMemo).ReadOnly); + if (AWinControl as TCustomMemo).WordWrap then + QTextEdit_setLineWrapMode(QTextEditH(Widget),QTextEditWidgetWidth) + else + QTextEdit_setLineWrapMode(QTextEditH(Widget),QTextEditNoWrap); end; {------------------------------------------------------------------------------ diff --git a/lcl/interfaces/qt/qtwscontrols.pp b/lcl/interfaces/qt/qtwscontrols.pp index 4e7eef3de5..1cb8ab845a 100644 --- a/lcl/interfaces/qt/qtwscontrols.pp +++ b/lcl/interfaces/qt/qtwscontrols.pp @@ -70,6 +70,9 @@ type class procedure SetSize(const AWinControl: TWinControl; const AWidth, AHeight: Integer); override; class procedure ShowHide(const AWinControl: TWinControl); override; //TODO: rename to SetVisible(control, visible) + class function GetText(const AWinControl: TWinControl; var AText: String): Boolean; override; + class procedure SetText(const AWinControl: TWinControl; const AText: string); override; + { class procedure AddControl(const AControl: TControl); override; class procedure SetBorderStyle(const AWinControl: TWinControl; const ABorderStyle: TBorderStyle); override; @@ -239,6 +242,42 @@ begin {$endif} end; +class function TQtWSWinControl.GetText(const AWinControl: TWinControl; var AText: String): Boolean; +var + AString: WideString; +begin + Result := True; + if AWinControl = nil then exit; + + if not AWinControl.HandleAllocated then exit; + case AWinControl.fCompStyle of + //csComboBox: + csEdit,csSpinedit: + QLineEdit_text(QLineEditH(TQtWidget(AWinControl.Handle).Widget),@AString); + csMemo: + QTextEdit_toPlainText(QTextEditH(TQtWidget(AWinControl.Handle).Widget),@AString); + else + Result := false; + end; + if Result then AText := AString; +end; + +class procedure TQtWSWinControl.SetText(const AWinControl: TWinControl; const AText: string); +var + AString: WideString; +begin + if AWinControl = nil then exit; + if not AWinControl.HandleAllocated then exit; + AString := AText; + case AWinControl.fCompStyle of + csEdit,csSpinedit: + QLineEdit_setText(QLineEditH(TQtWidget(AWinControl.Handle).Widget),@AString); + //csStaticText: + csMemo: + QTextEdit_append(QTextEditH(TQtWidget(AWinControl.Handle).Widget),@AString); + end; +end; + initialization //////////////////////////////////////////////////// diff --git a/lcl/interfaces/qt/qtwsstdctrls.pp b/lcl/interfaces/qt/qtwsstdctrls.pp index 098585d69a..5ea628ba83 100644 --- a/lcl/interfaces/qt/qtwsstdctrls.pp +++ b/lcl/interfaces/qt/qtwsstdctrls.pp @@ -154,10 +154,10 @@ type const AParams: TCreateParams): HWND; override; class procedure DestroyHandle(const AWinControl: TWinControl); override; public -// class procedure AppendText(const ACustomMemo: TCustomMemo; const AText: string); virtual; -// class function GetStrings(const ACustomMemo: TCustomMemo): TStrings; virtual; + class procedure AppendText(const ACustomMemo: TCustomMemo; const AText: string); override; + class function GetStrings(const ACustomMemo: TCustomMemo): TStrings; override; // class procedure SetScrollbars(const ACustomMemo: TCustomMemo; const NewScrollbars: TScrollStyle); virtual; -// class procedure SetWordWrap(const ACustomMemo: TCustomMemo; const NewWordWrap: boolean); virtual; + class procedure SetWordWrap(const ACustomMemo: TCustomMemo; const NewWordWrap: boolean); override; public { class function GetSelStart(const ACustomEdit: TCustomEdit): integer; override; class function GetSelLength(const ACustomEdit: TCustomEdit): integer; override; @@ -166,8 +166,8 @@ type class procedure SetEchoMode(const ACustomEdit: TCustomEdit; NewMode: TEchoMode); override; class procedure SetMaxLength(const ACustomEdit: TCustomEdit; NewLength: integer); override; class procedure SetPasswordChar(const ACustomEdit: TCustomEdit; NewChar: char); override; - class procedure SetReadOnly(const ACustomEdit: TCustomEdit; NewReadOnly: boolean); override; - class procedure SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer); override; +} class procedure SetReadOnly(const ACustomEdit: TCustomEdit; NewReadOnly: boolean); override; +{ class procedure SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer); override; class procedure SetSelLength(const ACustomEdit: TCustomEdit; NewLength: integer); override; class procedure GetPreferredSize(const AWinControl: TWinControl; @@ -278,9 +278,16 @@ type public end; +{$DEFINE MEMOHEADER} +{$I qtmemostrings.inc} +{$UNDEF MEMOHEADER} implementation +uses LMessages; + +{$I qtmemostrings.inc} + { TQtWSCustomMemo } {------------------------------------------------------------------------------ @@ -294,7 +301,6 @@ var QtTextEdit: TQtTextEdit; begin QtTextEdit := TQtTextEdit.Create(AWinControl, AParams); - Result := THandle(QtTextEdit); end; @@ -308,7 +314,69 @@ begin TQtTextEdit(AWinControl.Handle).Free; end; -{ TQtWSCustomEdit } + +{------------------------------------------------------------------------------ + Method: TQtWSCustomMemo.AppendText + Params: None + Returns: Nothing + ------------------------------------------------------------------------------} +class procedure TQtWSCustomMemo.AppendText(const ACustomMemo: TCustomMemo; const AText: string); +var + Astr: WideString; +begin + if Length(AText) = 0 then + exit; + Astr := WideString(AText); + //QTextEdit_append(QTextEditH(ACustomMemo.Handle),@Astr); + QTextEdit_append(QTextEditH(TQtWidget(ACustomMemo.Handle).Widget),@Astr); + +end; + + +{------------------------------------------------------------------------------ + Method: TQtWSCustomMemo.GetStrings + Params: None + Returns: Memo Contents as TStrings + ------------------------------------------------------------------------------} +class function TQtWSCustomMemo.GetStrings(const ACustomMemo: TCustomMemo): TStrings; +var + TextEditH: QTextEditH; +begin + TextEditH := QTextEditH((TQtWidget(ACustomMemo.Handle).Widget)); // set to proper type + Result := TQtMemoStrings.Create(TextEditH,ACustomMemo); +end; + + +{------------------------------------------------------------------------------ + Method: TQtWSCustomMemo.SetWordWrap + Params: NewWordWrap boolean + Returns: Nothing + ------------------------------------------------------------------------------} +class procedure TQtWSCustomMemo.SetWordWrap(const ACustomMemo: TCustomMemo; const NewWordWrap: boolean); +var + TextEditH: QTextEditH; +begin + TextEditH := QTextEditH((TQtWidget(ACustomMemo.Handle).Widget)); // set to proper type + if NewWordWrap then + QTextEdit_setLineWrapMode(TextEditH,QTextEditWidgetWidth) + else + QTextEdit_setLineWrapMode(TextEditH,QTextEditNoWrap); +end; + +{------------------------------------------------------------------------------ + Method: TQtWSCustomMemo.SetReadOnly + Params: NewReadOnly boolean + Returns: Nothing + ------------------------------------------------------------------------------} +class procedure TQtWSCustomMemo.SetReadOnly(const ACustomEdit: TCustomEdit; NewReadOnly: boolean); +var + TextEditH: QTextEditH; +begin + TextEditH := QTextEditH((TQtWidget(ACustomEdit.Handle).Widget)); // set to proper type + QTextEdit_setReadOnly(TextEditH,NewReadOnly); +end; + +{{ TQtWSCustomEdit } {------------------------------------------------------------------------------ Method: TQtWSCustomEdit.CreateHandle @@ -721,4 +789,4 @@ initialization RegisterWSComponent(TCustomStaticText, TQtWSCustomStaticText); // RegisterWSComponent(TStaticText, TQtWSStaticText); //////////////////////////////////////////////////// -end. \ No newline at end of file +end.