lazarus/ide/msgview.pp
lazarus 00dc711489 Added an OnSelectionChanged event in Main.pp fired by MSgView dialog. This fires when the ListBox gets clicked on.
This allows the editor to highlight different lines when you click on different error messages.
Shane

git-svn-id: trunk@372 -
2001-10-26 20:36:49 +00:00

157 lines
4.6 KiB
ObjectPascal

{
/***************************************************************************
MsgView.pp - compiler message view
----------------------------------
TMessagesView is responsible for displaying the
PPC386 compiler messages.
Initial Revision : Mon Apr 17th 2000
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
}
unit MsgView;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Controls, StdCtrls, Forms, LResources;
type
TMessagesView = class(TForm)
MessageView : TListBox;
private
Function GetMessage : String;
Procedure MessageViewClicked(sender : TObject);
FOnSelectionChanged : TNotifyEvent;
LastSelectedIndex : Integer;
protected
Function GetSelectedLineIndex : Integer;
public
constructor Create(AOwner : TComponent); override;
Procedure Add(const Texts : String);
Procedure Clear;
property Message : String read GetMessage;
property SelectedMessageIndex : Integer read GetSelectedLineIndex;
property OnSelectionChanged : TNotifyEvent read FOnSelectionChanged write FOnSelectionChanged;
end;
var
MessagesView : TMessagesView;
implementation
{ TMessagesView }
{------------------------------------------------------------------------------}
{ TMessagesView.Create }
{------------------------------------------------------------------------------}
constructor TMessagesView.Create(AOwner : TComponent);
Begin
inherited Create(AOwner);
if LazarusResources.Find(ClassName)=nil then begin
Caption:='Compiler Messages';
MessageView := TListBox.Create(Self);
With MessageView do Begin
Parent:= Self;
Align:= alClient;
Visible:= true;
Name := 'MessageView';
end;
end;
LastSelectedIndex := -1;
end;
{------------------------------------------------------------------------------}
{ TMessagesView.Add }
{------------------------------------------------------------------------------}
Procedure TMessagesView.Add(const Texts : String);
Begin
MessageView.Items.Add(Texts);
end;
{------------------------------------------------------------------------------}
{ TMessagesView.Clear }
{------------------------------------------------------------------------------}
Procedure TMessagesView.Clear;
Begin
MessageView.Clear;
if not Assigned(MessagesView.MessageView.OnCLick) then //:= @MessagesView.MessageViewClicked;
MessageView.OnClick := @MessageViewClicked;
end;
{------------------------------------------------------------------------------}
{ TMessagesView.GetMessage }
{------------------------------------------------------------------------------}
Function TMessagesView.GetMessage : String;
var
I : Integer;
Begin
Result := '';
if (MessageView.Items.Count > 0) and (MessageView.SelCount > 0) then
Result := MessageView.Items.Strings[GetSelectedLineIndex];
end;
Function TMessagesView.GetSelectedLineIndex : Integer;
var
I : Integer;
Begin
Result := -1;
if (MessageView.Items.Count > 0) and (MessageView.SelCount > 0) then Begin
for i := 0 to MessageView.Items.Count-1 do
Begin
if MessageView.Selected[I] then
Begin
Result := I;
Break;
end;
end;
end;
end;
Procedure TMessagesView.MessageViewClicked(sender : TObject);
var
Temp : Integer; //this temporarily holds the line # of the selection
begin
if (MessageView.Items.Count > 0) and (MessageView.SelCount > 0) then
Begin
Temp := GetSelectedLineIndex;
if Temp <> LastSelectedIndex then
Begin
LastSelectedIndex := Temp;
If Assigned(OnSelectionChanged) then
OnSelectionChanged(self);
end;
end;
end;
initialization
{ $I msgview.lrs}
end.