@@ -1194,9 +1194,7 @@ TMainForm = class(TExtForm)
11941194 procedure menuTabsInMultipleLinesClick(Sender: TObject);
11951195 procedure actResetPanelDimensionsExecute(Sender: TObject);
11961196 procedure menuAlwaysGenerateFilterClick(Sender: TObject);
1197- //procedure SynMemoQueryTokenHint(Sender: TObject; Coords: TBufferCoord;
1198- // const Token: string; TokenType: Integer; Attri: TSynHighlighterAttributes;
1199- // var HintText: string);
1197+ procedure SynMemoQueryShowHint(Sender: TObject; HintInfo: PHintInfo);
12001198 procedure actCopyGridNodesExecute(Sender: TObject);
12011199 procedure ApplicationException(Sender: TObject; E: Exception);
12021200 procedure actQueryTableExecute(Sender: TObject);
@@ -7069,7 +7067,7 @@ procedure TMainForm.SynMemoQueryProcessCommand(Sender: TObject;
70697067 Exit;
70707068 Editor := Sender as TSynMemo;
70717069 Editor.GetHighlighterAttriAtRowColEx(Editor.CaretXY, CaretToken, CaretTokenTypeInt, CaretStart, CaretAttri);
7072- if not (TtkTokenKind(CaretTokenTypeInt) in [SynHighlighterSQL.tkString, SynHighlighterSQL.tkComment])
7070+ if not (SynHighlighterSQL. TtkTokenKind(CaretTokenTypeInt) in [SynHighlighterSQL.tkString, SynHighlighterSQL.tkComment])
70737071 then begin
70747072 Proposal := SynCompletionProposal;
70757073 p := Editor.ClientToScreen(Point(Editor.CaretXPix, Editor.CaretYPix + Editor.LineHeight + 1));
@@ -7194,10 +7192,13 @@ procedure TMainForm.SynMemoQueryStatusChange(Sender: TObject; Changes: TSynStatu
71947192end;
71957193
71967194
7197- {procedure TMainForm.SynMemoQueryTokenHint(Sender: TObject; Coords: TBufferCoord;
7198- const Token: string; TokenType: Integer; Attri: TSynHighlighterAttributes;
7199- var HintText: string);
7195+ procedure TMainForm.SynMemoQueryShowHint(Sender: TObject; HintInfo: PHintInfo);
72007196var
7197+ Edit: TSynEdit;
7198+ Token: String;
7199+ Attri: TSynHighlighterAttributes;
7200+ TokenType, TokenStart: Integer;
7201+ RowColPos: TPoint;
72017202 SQLFunc: TSQLFunction;
72027203 Conn: TDBConnection;
72037204 AllObjects: TDBObjectList;
@@ -7209,14 +7210,20 @@ procedure TMainForm.SynMemoQueryStatusChange(Sender: TObject; Changes: TSynStatu
72097210 Param: TRoutineParam;
72107211begin
72117212 // Activate hint for SQL function in query editors
7213+ Edit := Sender as TSynEdit;
7214+ RowColPos := Edit.PixelsToRowColumn(HintInfo.CursorPos);
7215+ if not Edit.GetHighlighterAttriAtRowColEx(RowColPos, Token, TokenType, TokenStart, Attri) then
7216+ Exit;
7217+
7218+ LogSQL('TokenType:'+TokenType.ToString+' Token:"'+Token+'"', lcDebug);
72127219 Conn := ActiveConnection;
72137220 if Assigned(Conn) then begin
7214- case TtkTokenKind(TokenType) of
7221+ case SynHighlighterSQL. TtkTokenKind(TokenType) of
72157222
72167223 SynHighlighterSQL.tkFunction: begin
72177224 for SQLFunc in ActiveConnection.SQLFunctions do begin
72187225 if SQLFunc.Name.ToUpper = Token.ToUpper then begin
7219- HintText := SQLFunc.Name + SQLFunc.Declaration + sLineBreak + sLineBreak + SQLFunc.Description;
7226+ HintInfo.HintStr := SQLFunc.Name + SQLFunc.Declaration + sLineBreak + sLineBreak + SQLFunc.Description;
72207227 Break;
72217228 end;
72227229 end;
@@ -7228,15 +7235,15 @@ procedure TMainForm.SynMemoQueryStatusChange(Sender: TObject; Changes: TSynStatu
72287235 AllObjects := Conn.GetDBObjects(Conn.Database);
72297236 for Obj in AllObjects do begin
72307237 if (Obj.NodeType = lntTable) and (Obj.Name.ToLower = Token.ToLower) then begin
7231- HintText := _(Obj.ObjType) + ' ' + Obj.Name + ':' + sLineBreak +
7238+ HintInfo.HintStr := _(Obj.ObjType) + ' ' + Obj.Name + ':' + sLineBreak +
72327239 _('Rows') + ': ' + FormatNumber(Obj.Rows) + sLineBreak +
72337240 _('Size') + ': ' + FormatByteNumber(Obj.DataLen + Obj.IndexLen) + SLineBreak;
72347241 ColumnNameChars := 0;
72357242 for Column in Obj.TableColumns do begin
72367243 ColumnNameChars := Max(ColumnNameChars, Length(Column.Name));
72377244 end;
72387245 for Column in Obj.TableColumns do begin
7239- HintText := HintText + Format('%s%'+ColumnNameChars.ToString+'s: %s', [SLineBreak, Column.Name, Column.FullDataType]);
7246+ HintInfo.HintStr := HintInfo.HintStr + Format('%s%'+ColumnNameChars.ToString+'s: %s', [SLineBreak, Column.Name, Column.FullDataType]);
72407247 end;
72417248
72427249 Break;
@@ -7245,50 +7252,52 @@ procedure TMainForm.SynMemoQueryStatusChange(Sender: TObject; Changes: TSynStatu
72457252 end;
72467253 end;
72477254
7248- SynHighlighterSQL.tkProcName: begin
7255+ {SynHighlighterSQL.tkProcName: begin
7256+ // tkProcName not available in Laz SynEdit
72497257 // Show routine parameters, comment and body
72507258 if (not Conn.IsLockedByThread) and Conn.DbObjectsCached(Conn.Database) then begin
72517259 AllObjects := Conn.GetDBObjects(Conn.Database);
72527260 for Obj in AllObjects do begin
72537261 if (Obj.NodeType in [lntFunction, lntProcedure]) and (Obj.Name.ToLower = Token.ToLower) then begin
72547262 Parameters := TRoutineParamList.Create;
72557263 Conn.ParseRoutineStructure(Obj, Parameters);
7256- HintText := _(Obj.ObjType) + ' ' + Obj.Name;
7264+ HintInfo.HintStr := _(Obj.ObjType) + ' ' + Obj.Name;
72577265 Params := TStringList.Create;
72587266 for Param in Parameters do begin
72597267 Params.Add(Param.Name + ' ['+Param.Datatype+']');
72607268 end;
7261- HintText := HintText + '(' + Implode(', ', Params) + ')' + sLineBreak + sLineBreak;
7269+ HintInfo.HintStr := HintInfo.HintStr + '(' + Implode(', ', Params) + ')' + sLineBreak + sLineBreak;
72627270 Params.Free;
72637271 if not Obj.Returns.IsEmpty then
7264- HintText := HintText + 'Returns: ' + Obj.Returns + sLineBreak + sLineBreak;
7272+ HintInfo.HintStr := HintInfo.HintStr + 'Returns: ' + Obj.Returns + sLineBreak + sLineBreak;
72657273 if not Obj.Comment.IsEmpty then
7266- HintText := HintText + Obj.Comment + sLineBreak + sLineBreak;
7274+ HintInfo.HintStr := HintInfo.HintStr + Obj.Comment + sLineBreak + sLineBreak;
72677275 if not Obj.Body.IsEmpty then
7268- HintText := HintText + StrEllipsis(Obj.Body, SIZE_KB);
7269- HintText := Trim(HintText );
7276+ HintInfo.HintStr := HintInfo.HintStr + StrEllipsis(Obj.Body, SIZE_KB);
7277+ HintInfo.HintStr := Trim(HintInfo.HintStr );
72707278 Break;
72717279 end;
72727280 end;
72737281 end;
7274- end;
7282+ end;}
72757283
72767284 SynHighlighterSQL.tkDatatype: begin
72777285 for i:=Low(Conn.Datatypes) to High(Conn.Datatypes) do begin
72787286 if Conn.Datatypes[i].Name.ToLower = Token.ToLower then begin
7279- HintText := WrapText(Conn.Datatypes[i].Description, 100);
7287+ HintInfo.HintStr := WrapText(Conn.Datatypes[i].Description, 100);
72807288 Break;
72817289 end;
72827290 end;
72837291 end;
72847292
72857293 SynHighlighterSQL.tkString: begin
7286- HintText := _('String:') + ' ' + FormatByteNumber(Length(Token));
7294+ HintInfo.HintStr := _('String:') + ' ' + FormatByteNumber(Length(Token));
72877295 end;
72887296
72897297 end;
72907298 end;
7291- end;}
7299+
7300+ end;
72927301
72937302procedure TMainForm.TimerHostUptimeTimer(Sender: TObject);
72947303var
@@ -12295,7 +12304,7 @@ procedure TMainForm.actNewQueryTabExecute(Sender: TObject);
1229512304 QueryTab.Memo.Parent := QueryTab.pnlMemo;
1229612305 QueryTab.Memo.Align := SynMemoQuery.Align;
1229712306 QueryTab.Memo.Constraints := SynMemoQuery.Constraints;
12298- // QueryTab.Memo.HintMode := SynMemoQuery.HintMode ;
12307+ QueryTab.Memo.ShowHint := SynMemoQuery.ShowHint ;
1229912308 QueryTab.Memo.Left := SynMemoQuery.Left;
1230012309 QueryTab.Memo.Options := SynMemoQuery.Options;
1230112310 QueryTab.Memo.Options2 := SynMemoQuery.Options2;
@@ -12323,7 +12332,7 @@ procedure TMainForm.actNewQueryTabExecute(Sender: TObject);
1232312332 QueryTab.Memo.OnProcessCommand := SynMemoQuery.OnProcessCommand;
1232412333 QueryTab.Memo.OnReplaceText := SynMemoQuery.OnReplaceText;
1232512334 //QueryTab.Memo.OnPaintTransient := SynMemoQuery.OnPaintTransient;
12326- // QueryTab.Memo.OnTokenHint := SynMemoQuery.OnTokenHint ;
12335+ QueryTab.Memo.OnShowHint := SynMemoQuery.OnShowHint ;
1232712336 QueryTab.MemoLineBreaks := TLineBreaks(AppSettings.ReadInt(asLineBreakStyle));
1232812337 SynCompletionProposal.AddEditor(QueryTab.Memo);
1232912338
@@ -13411,10 +13420,10 @@ procedure TMainForm.SetupSynEditor(Editor: TSynMemo);
1341113420 Editor.RightEdge := BaseEditor.RightEdge;
1341213421 //Editor.MaxScrollWidth := BaseEditor.MaxScrollWidth;
1341313422 Editor.WantTabs := BaseEditor.WantTabs;
13414- // Editor.HintMode := BaseEditor.HintMode ;
13423+ Editor.ShowHint := BaseEditor.ShowHint ;
1341513424 Editor.OnKeyPress := BaseEditor.OnKeyPress;
1341613425 Editor.OnMouseWheel := BaseEditor.OnMouseWheel;
13417- // Editor.OnTokenHint := BaseEditor.OnTokenHint ;
13426+ Editor.OnShowHint := BaseEditor.OnShowHint ;
1341813427 if Editor <> SynMemoSQLLog then begin
1341913428 //Editor.OnPaintTransient := BaseEditor.OnPaintTransient;
1342013429 end;
@@ -14754,7 +14763,7 @@ procedure TMainForm.ApplicationShowHint(var HintStr: string; var CanShow: Boolea
1475414763 SetHintFontByControl;
1475514764 end
1475614765 else if HintInfo.HintControl is TSynMemo then begin
14757- // Token hint displaying through SynEdit's OnTokenHint event
14766+ // Token hint displaying through SynEdit's OnShowHint event
1475814767 Editor := TSynMemo(HintInfo.HintControl);
1475914768 SetHintFontByControl(Editor);
1476014769 NewHideTimeout := Min(Length(HintStr) * 100, 60*1000);
0 commit comments