qt intf: fixed TMemo clear from Felipe

git-svn-id: trunk@9273 -
This commit is contained in:
mattias 2006-05-13 12:51:52 +00:00
parent e58dd594be
commit 444e56f095

View File

@ -19,6 +19,7 @@ type
FUpdating: Boolean; // We're changing Qt Widget FUpdating: Boolean; // We're changing Qt Widget
procedure InternalUpdate; procedure InternalUpdate;
procedure ExternalUpdate(var Astr: WideString; Clear: Boolean = True); procedure ExternalUpdate(var Astr: WideString; Clear: Boolean = True);
procedure IsChanged; // OnChange triggered by program action
protected protected
function GetTextStr: string; override; function GetTextStr: string; override;
function GetCount: integer; override; function GetCount: integer; override;
@ -44,15 +45,7 @@ Implementation
uses qtprivate, LMessages; uses qtprivate, LMessages;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
DelphiOnChange sets Delphi compatibility for OnChange event: Private Method: TQtMemoStrings.InternalUpdate
If defined, OnChange is generated whenever there's a change
If undefined, OnChange is generated if change is caused by user action
------------------------------------------------------------------------------}
{$define DelphiOnChange}
{------------------------------------------------------------------------------
Method: TQtMemoStrings.InternalUpdate
Params: None Params: None
Returns: Nothing Returns: Nothing
@ -68,28 +61,41 @@ begin
end; end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
Method: TQtMemoStrings.ExternalUpdate Private Method: TQtMemoStrings.ExternalUpdate
Params: Astr: Text for Qt Widget; Clear: if we must clear first Params: Astr: Text for Qt Widget; Clear: if we must clear first
Returns: Nothing Returns: Nothing
Updates Qt Widget from text - If DelphiOnChange, generates OnChange Event Updates Qt Widget from text - If DelphiOnChange, generates OnChange Event
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
procedure TQtMemoStrings.ExternalUpdate(var Astr: WideString; Clear: Boolean = True); procedure TQtMemoStrings.ExternalUpdate(var Astr: WideString; Clear: Boolean = True);
{$ifdef DelphiOnChange} {var
var Mess: TLMessage;}
Mess: TLMessage;
{$endif}
begin begin
FUpdating := True; FUpdating := True;
if Clear then if Clear then
QTextEdit_clear(FQtTextEdit); QTextEdit_clear(FQtTextEdit);
QTextEdit_append(FQtTextEdit,@Astr); QTextEdit_append(FQtTextEdit,@Astr);
FUpdating := False; FUpdating := False;
{$ifdef DelphiOnChange} {FillChar(Mess, SizeOf(Mess), #0);
FillChar(Mess, SizeOf(Mess), #0); (FOwner as TCustomMemo).Modified := False;
Mess.Msg := CM_TEXTCHANGED; FOwner.Dispatch(TLMessage(Mess));}
FOwner.Dispatch(TLMessage(Mess)); IsChanged;
{$endif} FUpdating := False;
end;
{------------------------------------------------------------------------------
Private Method: TQtMemoStrings.IsChanged
Params: None
Returns: Nothing
Triggers the OnChange Event, with modified set to false
------------------------------------------------------------------------------}
procedure TQtMemoStrings.IsChanged;
begin
if Assigned((FOwner as TCustomMemo).OnChange) then begin
(FOwner as TCustomMemo).Modified := False;
(FOwner as TCustomMemo).OnChange(self);
end;
end; end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
@ -201,9 +207,10 @@ begin
FTextChanged := True; FTextChanged := True;
FillChar(Mess, SizeOf(Mess), #0); FillChar(Mess, SizeOf(Mess), #0);
Mess.Msg := CM_TEXTCHANGED; Mess.Msg := CM_TEXTCHANGED;
//(FOwner as TCustomMemo).Modified := True;
FOwner.Dispatch(TLMessage(Mess)); FOwner.Dispatch(TLMessage(Mess));
end; end;
Result := False; Result := True;
end; end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
@ -216,9 +223,6 @@ end;
procedure TQtMemoStrings.Assign(Source: TPersistent); procedure TQtMemoStrings.Assign(Source: TPersistent);
var var
Astr: WideString; Astr: WideString;
{$ifdef DelphiOnChange}
Mess: TLMessage;
{$endif}
begin begin
if (Source=Self) or (Source=nil) then exit; if (Source=Self) or (Source=nil) then exit;
if Source is TStrings then begin if Source is TStrings then begin
@ -227,11 +231,6 @@ begin
Astr := FStringList.Text; Astr := FStringList.Text;
ExternalUpdate(Astr,True); ExternalUpdate(Astr,True);
FTextChanged := False; FTextChanged := False;
{$ifdef DelphiOnChange}
FillChar(Mess, SizeOf(Mess), #0);
Mess.Msg := CM_TEXTCHANGED;
FOwner.Dispatch(TLMessage(Mess));
{$endif}
exit; exit;
end; end;
Inherited Assign(Source); Inherited Assign(Source);
@ -245,21 +244,20 @@ end;
Clears all. Clears all.
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
procedure TQtMemoStrings.Clear; procedure TQtMemoStrings.Clear;
{$ifdef DelphiOnChange}
var var
Mess: TLMessage; Mess: TLMessage;
{$endif}
begin begin
FUpdating := True; FUpdating := True;
FStringList.Clear; FStringList.Clear;
QTextEdit_clear(FQtTextEdit); QTextEdit_clear(FQtTextEdit);
FTextChanged := False; FTextChanged := False;
FUpdating := False; FUpdating := False;
{$ifdef DelphiOnChange} {FillChar(Mess, SizeOf(Mess), #0);
FillChar(Mess, SizeOf(Mess), #0); FillChar(Mess, SizeOf(Mess), #0);
Mess.Msg := CM_TEXTCHANGED; Mess.Msg := CM_TEXTCHANGED;
FOwner.Dispatch(TLMessage(Mess)); (FOwner as TCustomMemo).Modified := False;
{$endif} FOwner.Dispatch(TLMessage(Mess));}
IsChanged;
end; end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------