mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-06 18:24:26 +08:00
Now the memo editor has its own unit to live in the editor link should also live there. Moves relevant code from main and rename the object to TMemoEditorLink to be more clear.
This commit is contained in:
119
source/main.pas
119
source/main.pas
@ -18,7 +18,7 @@ uses
|
||||
SynMemo, synedit, SynEditTypes, ZDataSet, ZSqlProcessor,
|
||||
HeidiComp, sqlhelp, MysqlQueryThread, Childwin, VirtualTrees,
|
||||
DateUtils, PngImageList, OptimizeTables, View, Usermanager,
|
||||
SelectDBObject, TntStdCtrls, memoeditor;
|
||||
SelectDBObject;
|
||||
|
||||
type
|
||||
TMainForm = class(TForm)
|
||||
@ -334,31 +334,6 @@ type
|
||||
end;
|
||||
|
||||
|
||||
TMemoEditor = class(TInterfacedObject, IVTEditLink)
|
||||
private
|
||||
FForm: TfrmMemoEditor;
|
||||
FTree: TCustomVirtualStringTree; // A back reference to the tree calling.
|
||||
FNode: PVirtualNode; // The node to be edited.
|
||||
FColumn: TColumnIndex; // The column of the node.
|
||||
FTextBounds: TRect; // Smallest rectangle around the text.
|
||||
FStopping: Boolean; // Set to True when the edit link requests stopping the edit action.
|
||||
public
|
||||
FieldType: Integer;
|
||||
MaxInputLength: Integer;
|
||||
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
|
||||
function BeginEdit: Boolean; virtual; stdcall;
|
||||
function CancelEdit: Boolean; virtual; stdcall;
|
||||
function EndEdit: Boolean; virtual; stdcall;
|
||||
function GetBounds: TRect; virtual; stdcall;
|
||||
function PrepareEdit(Tree: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex): Boolean; virtual; stdcall;
|
||||
procedure ProcessMessage(var Message: TMessage); virtual; stdcall;
|
||||
procedure SetBounds(R: TRect); virtual; stdcall;
|
||||
end;
|
||||
|
||||
|
||||
var
|
||||
MainForm : TMainForm;
|
||||
appstarted : Boolean = false; // see connections.pas
|
||||
@ -2153,96 +2128,4 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
constructor TMemoEditor.Create;
|
||||
begin
|
||||
inherited;
|
||||
end;
|
||||
|
||||
destructor TMemoEditor.Destroy;
|
||||
begin
|
||||
inherited;
|
||||
FForm.Free;
|
||||
end;
|
||||
|
||||
|
||||
function TMemoEditor.PrepareEdit(Tree: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex): Boolean; stdcall;
|
||||
// Retrieves the true text bounds from the owner tree.
|
||||
var
|
||||
Text: WideString;
|
||||
F: TFont;
|
||||
begin
|
||||
Result := Tree is TCustomVirtualStringTree;
|
||||
if not Result then
|
||||
exit;
|
||||
|
||||
FTree := Tree as TVirtualStringTree;
|
||||
FNode := Node;
|
||||
FColumn := Column;
|
||||
|
||||
// Initial size, font and text of the node.
|
||||
F := TFont.Create;
|
||||
FTree.GetTextInfo(Node, Column, F, FTextBounds, Text);
|
||||
|
||||
// Create the editor form
|
||||
FForm := TfrmMemoEditor.Create(Ftree);
|
||||
FForm.Parent := Tree;
|
||||
FForm.memoText.Font := F;
|
||||
FForm.memoText.Text := Text;
|
||||
end;
|
||||
|
||||
|
||||
function TMemoEditor.BeginEdit: Boolean; stdcall;
|
||||
begin
|
||||
Result := not FStopping;
|
||||
if Result then
|
||||
FForm.Show;
|
||||
end;
|
||||
|
||||
|
||||
function TMemoEditor.CancelEdit: Boolean; stdcall;
|
||||
begin
|
||||
Result := not FStopping;
|
||||
if Result then begin
|
||||
FStopping := True;
|
||||
FForm.Hide;
|
||||
FTree.CancelEditNode;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
function TMemoEditor.EndEdit: Boolean; stdcall;
|
||||
begin
|
||||
Result := not FStopping;
|
||||
if Result then try
|
||||
FStopping := True;
|
||||
if FForm.memoText.Text <> FTree.Text[FNode, FColumn] then
|
||||
FTree.Text[FNode, FColumn] := FForm.memoText.Text;
|
||||
FForm.Hide;
|
||||
except
|
||||
FStopping := False;
|
||||
raise;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
function TMemoEditor.GetBounds: TRect; stdcall;
|
||||
begin
|
||||
Result := FForm.BoundsRect;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMemoEditor.ProcessMessage(var Message: TMessage); stdcall;
|
||||
begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TMemoEditor.SetBounds(R: TRect); stdcall;
|
||||
begin
|
||||
// Sets the top left corner of the edit control
|
||||
if not FStopping then
|
||||
FForm.TopLeft := R.TopLeft;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
end.
|
||||
|
Reference in New Issue
Block a user