diff --git a/ide/main.pp b/ide/main.pp index c29227b117..9e1efd8af5 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -3194,7 +3194,11 @@ var UnitList: TList; MainUnitName, Ext, DlgCaption: string; MainUnitInfo, AnUnitInfo: TUnitInfo; MainUnitIndex: integer; + ActiveSourceEditor: TSourceEditor; + ActiveUnitInfo: TUnitInfo; + AForm: TForm; Begin + GetCurrentUnit(ActiveSourceEditor,ActiveUnitInfo); UnitList:=TList.Create; try MainUnitIndex:=-1; @@ -3204,12 +3208,12 @@ Begin if Project.MainUnit=i then MainUnitIndex:=i; if Project.Units[i].FormName<>'' then UnitList.Add(TViewUnitsEntry.Create( - Project.Units[i].FormName,i,false)); + Project.Units[i].FormName,i,Project.Units[i]=ActiveUnitInfo)); end else begin if Project.Units[i].UnitName<>'' then begin if Project.MainUnit=i then MainUnitIndex:=i; UnitList.Add(TViewUnitsEntry.Create( - Project.Units[i].UnitName,i,false)); + Project.Units[i].UnitName,i,Project.Units[i]=ActiveUnitInfo)); end else if Project.MainUnit=i then begin MainUnitInfo:=Project.Units[Project.MainUnit]; if Project.ProjectType in [ptProgram,ptApplication,ptCustomProgram] @@ -3228,7 +3232,7 @@ Begin if MainUnitName<>'' then begin MainUnitIndex:=UnitList.Count; UnitList.Add(TViewUnitsEntry.Create( - MainUnitName,i,false)); + MainUnitName,i,MainUnitInfo=ActiveUnitInfo)); end; end; end; @@ -3240,12 +3244,13 @@ Begin else DlgCaption:='View units'; if ShowViewUnitsDlg(UnitList,true,DlgCaption)=mrOk then begin + AnUnitInfo:=nil; for i:=0 to UnitList.Count-1 do begin if TViewUnitsEntry(UnitList[i]).Selected then begin AnUnitInfo:=Project.Units[TViewUnitsEntry(UnitList[i]).ID]; - if AnUnitInfo.Loaded then - SourceNoteBook.NoteBook.PageIndex:=AnUnitInfo.EditorIndex - else begin + if AnUnitInfo.Loaded then begin + SourceNoteBook.NoteBook.PageIndex:=AnUnitInfo.EditorIndex; + end else begin if MainUnitIndex=i then Result:=DoOpenMainUnit(false) else @@ -3254,8 +3259,13 @@ Begin end; end; end; - FCodeLastActivated:=not OnlyForms; - DoBringToFrontFormOrUnit; + if (AnUnitInfo<>nil) then begin + AForm:=SourceNotebook; + if OnlyForms and (AnUnitInfo.Form<>nil) then begin + AForm:=TForm(AnUnitInfo.Form); + end; + BringWindowToTop(AForm.Handle) + end; end; finally UnitList.Free; @@ -5962,6 +5972,9 @@ end. { ============================================================================= $Log$ + Revision 1.223 2002/02/17 19:34:44 lazarus + MG: fixed view units/forms + Revision 1.222 2002/02/11 15:12:00 lazarus MG: started OI events diff --git a/ide/viewunit_dlg.pp b/ide/viewunit_dlg.pp index c0661251fe..22d39e6c52 100644 --- a/ide/viewunit_dlg.pp +++ b/ide/viewunit_dlg.pp @@ -42,8 +42,10 @@ type ListBox: TListBox; btnOK : TButton; btnCancel : TButton; - Procedure btnOKClick(Sender : TOBject); - Procedure btnCancelClick(Sender : TOBject); + MultiselectCheckBox: TCheckBox; + Procedure btnOKClick(Sender :TObject); + Procedure btnCancelClick(Sender :TObject); + procedure MultiselectCheckBoxClick(Sender :TObject); public constructor Create(AOwner: TComponent); override; end; @@ -66,7 +68,7 @@ begin try ViewUnits.Caption:=Caption; ViewUnits.ListBox.Visible:=false; - ViewUnits.ListBox.MultiSelect:=MultiSelect; + ViewUnits.MultiselectCheckBox.Enabled:=MultiSelect; with ViewUnits.ListBox.Items do begin BeginUpdate; Clear; @@ -79,8 +81,9 @@ begin ViewUnits.ListBox.Visible:=true; Result:=ViewUnits.ShowModal; if Result=mrOk then begin - for i:=0 to Entries.Count-1 do + for i:=0 to Entries.Count-1 do begin TViewUnitsEntry(Entries[i]).Selected:=ViewUnits.ListBox.Selected[i]; + end; end; finally ViewUnits.Free; @@ -144,9 +147,23 @@ begin Left:= Pad; Width:= Self.Width - (Self.Width - btnOK.Left) - (2*pad); Height:= Self.Height - Top - Pad; - Visible:= true; MultiSelect:= false; Name := 'Listbox'; + Visible:= true; + end; + + MultiselectCheckBox:=TCheckBox.Create(Self); + with MultiselectCheckBox do begin + Parent:=Self; + Name:='MultiselectCheckBox'; + Left:=btnOK.Left; + Top:=btnCancel.Top+btnCancel.Height+2*pad; + Width:=btnOk.Width; + Height:=25; + Caption:='Multi'; + Checked:=false; + OnClick:=@MultiselectCheckBoxClick; + Visible:=true; end; end; end; @@ -163,6 +180,11 @@ Begin ModalResult := mrCancel; end; +procedure TViewUnits.MultiselectCheckBoxClick(Sender :TObject); +begin + ListBox.Multiselect:=MultiselectCheckBox.Checked; +end; + initialization { $I viewunits1.lrs} @@ -171,6 +193,9 @@ initialization end. { $Log$ + Revision 1.9 2002/02/17 19:34:45 lazarus + MG: fixed view units/forms + Revision 1.8 2001/04/04 12:20:34 lazarus MG: added add to/remove from project, small bugfixes