OSDN Git Service

カラム順序を保存するようになった。
authoryoffy <yoffy>
Wed, 8 Sep 2004 12:50:21 +0000 (12:50 +0000)
committeryoffy <yoffy>
Wed, 8 Sep 2004 12:50:21 +0000 (12:50 +0000)
Giko.pas

index 2fde560..ba42435 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -925,6 +925,7 @@ type
     procedure ThreadRangeActionExecute(Sender: TObject);
     procedure TabAutoSaveActionExecute(Sender: TObject);
     procedure TabAutoLoadActionExecute(Sender: TObject);
+    procedure ListViewColumnDragged(Sender: TObject);
        private
                { Private \90é\8c¾ }
         //RoundList : TRoundList;
@@ -1082,6 +1083,8 @@ type
                function LoadTabURLs : Boolean;
                // \83o\83\93\83h\95\9d\82ð\8dÄ\8cv\8eZ\81E\8dÄ\90Ý\92è\82·\82é
                procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
+               /// ListView \82Ì\83J\83\89\83\80\95\9d\82¨\82æ\82Ñ\88Ê\92u\82Ì\95Û\91
+               procedure ActiveListColumnSave;
        protected
                procedure CreateParams(var Params: TCreateParams); override;
                procedure WndProc(var Message: TMessage); override;
@@ -1896,17 +1899,7 @@ begin
 //     Application.OnDeactivate := nil;
 //     Self.OnDeactivate := nil;
        try
-               //column\95\9d
-               if GetActiveList is TBBS then begin
-                       for i := 0 to ListView.Columns.Count - 1 do
-                               GikoSys.Setting.BBSColumnWidth[i] := ListView.Column[i].Width;
-               end else if GetActiveList is TCategory then begin
-                       for i := 0 to ListView.Columns.Count - 1 do
-                               GikoSys.Setting.CategoryColumnWidth[i] := ListView.Column[i].Width;
-               end else if GetActiveList is TBoard then begin
-                       for i := 0 to ListView.Columns.Count - 1 do
-                               GikoSys.Setting.BoardColumnWidth[i] := ListView.Column[i].Width;
-               end;
+               ActiveListColumnSave;
        except
        end;
        try
@@ -2277,25 +2270,36 @@ end;
 
 function TGikoForm.SetCategoryListItem(ABBS2ch: TBBS): Integer;
 var
-       ListColumn: TListColumn;
-       i, id : Integer;
+       TitleColumn     : TListColumn;
+       ListColumn      : TListColumn;
+       i, id, idx      : Integer;
 begin
        ListView.Items.BeginUpdate;
        try
                Screen.Cursor := crHourGlass;
 
                ListView.Columns.Clear;
+               TitleColumn := ListView.Columns.Add;
+               TitleColumn.Caption := GikoBBSColumnCaption[ Ord( gbbscTitle ) ];
+               TitleColumn.Width := GikoSys.Setting.BBSColumnWidth[ Ord( gbbscTitle ) ];
+               idx := 0;
                for i := 0 to GikoSys.Setting.BBSColumnOrder.Count - 1 do begin
-                       id := Ord( GikoSys.Setting.BBSColumnOrder[ i ] );
-                       if (Integer( Low( TGikoBBSColumnID ) ) <= id) and
-                               (id <= Integer( High( TGikoBBSColumnID ) )) then begin
-                               ListColumn := ListView.Columns.Add;
-//                                     ListColumn.Tag := id;
-                                       ListColumn.Tag := i;
-                               ListColumn.Caption := GikoBBSColumnCaption[ id ];
-                               ListColumn.Width := GikoSys.Setting.BBSColumnWidth[ id ];
+                       if GikoSys.Setting.BBSColumnOrder[ i ] = gbbscTitle then begin
+                               TitleColumn.Tag := i;
+                               idx := i;
+                       end else begin
+                               id := Ord( GikoSys.Setting.BBSColumnOrder[ i ] );
+                               if (Integer( Low( TGikoBBSColumnID ) ) <= id) and
+                                       (id <= Integer( High( TGikoBBSColumnID ) )) then begin
+                                       ListColumn := ListView.Columns.Add;
+       //                                      ListColumn.Tag := id;
+                                               ListColumn.Tag := i;
+                                       ListColumn.Caption := GikoBBSColumnCaption[ id ];
+                                       ListColumn.Width := GikoSys.Setting.BBSColumnWidth[ id ];
+                               end;
                        end;
                end;
+               TitleColumn.Index := idx;
 
                ListView.Items.Count := 0;
                ListView.Items.Clear;
@@ -2329,25 +2333,36 @@ end;
 
 function TGikoForm.SetBoardListItem(Category: TCategory): Integer;
 var
-       ListColumn: TListColumn;
-       i, id : Integer;
+       TitleColumn     : TListColumn;
+       ListColumn      : TListColumn;
+       i, id, idx      : Integer;
 begin
        ListView.Items.BeginUpdate;
        try
                Screen.Cursor := crHourGlass;
 
                ListView.Columns.Clear;
+               TitleColumn := ListView.Columns.Add;
+               TitleColumn.Caption := GikoCategoryColumnCaption[ Ord( gccTitle ) ];
+               TitleColumn.Width := GikoSys.Setting.CategoryColumnWidth[ Ord( gccTitle ) ];
+               idx := 0;
                for i := 0 to GikoSys.Setting.CategoryColumnOrder.Count - 1 do begin
-                       id := Ord( GikoSys.Setting.CategoryColumnOrder[ i ] );
-                       if (Integer( Low( TGikoCategoryColumnID ) ) <= id) and
-                               (id <= Integer( High( TGikoCategoryColumnID ) )) then begin
-                               ListColumn := ListView.Columns.Add;
-//                                     ListColumn.Tag := id;
+                       if GikoSys.Setting.CategoryColumnOrder[ i ] = gccTitle then begin
+                               TitleColumn.Tag := i;
+                               idx := i;
+                       end else begin
+                               id := Ord( GikoSys.Setting.CategoryColumnOrder[ i ] );
+                               if (Integer( Low( TGikoCategoryColumnID ) ) <= id) and
+                                       (id <= Integer( High( TGikoCategoryColumnID ) )) then begin
+                                       ListColumn := ListView.Columns.Add;
+//                                             ListColumn.Tag := id;
                                        ListColumn.Tag := i;
-                               ListColumn.Caption := GikoCategoryColumnCaption[ id ];
-                               ListColumn.Width := GikoSys.Setting.CategoryColumnWidth[ id ];
+                                       ListColumn.Caption := GikoCategoryColumnCaption[ id ];
+                                       ListColumn.Width := GikoSys.Setting.CategoryColumnWidth[ id ];
+                               end;
                        end;
                end;
+               TitleColumn.Index := idx;
 
                ListView.Items.Count := 0;
                ListView.Items.Clear;
@@ -2381,8 +2396,9 @@ end;
 
 function TGikoForm.SetThreadListItem(Board: TBoard): Integer;
 var
-       ListColumn: TListColumn;
-       i, id : Integer;
+       TitleColumn     : TListColumn;
+       ListColumn      : TListColumn;
+       i, id, idx      : Integer;
 begin
        ListView.Items.BeginUpdate;
        try
@@ -2393,18 +2409,28 @@ begin
                if ListView.Columns.Count <> GikoSys.Setting.BoardColumnOrder.Count then
                begin
                        ListView.Columns.Clear;
+                       TitleColumn := ListView.Columns.Add;
+                       TitleColumn.Caption := GikoBoardColumnCaption[ Ord( gbcTitle ) ];
+                       TitleColumn.Width := GikoSys.Setting.BoardColumnWidth[ Ord( gbcTitle ) ];
+                       idx := 0;
                        for i := 0 to GikoSys.Setting.BoardColumnOrder.Count - 1 do begin
-                               id := Ord( GikoSys.Setting.BoardColumnOrder[ i ] );
-                               if (Integer( Low( TGikoBoardColumnID ) ) <= id) and
-                                       (id <= Integer( High( TGikoBoardColumnID ) )) then begin
-                                       ListColumn := ListView.Columns.Add;
-                                       ListColumn.Caption := GikoBoardColumnCaption[ id ];
-//                                     ListColumn.Tag := id;
-                                       ListColumn.Tag := i;
-                                       ListColumn.Width := GikoSys.Setting.BoardColumnWidth[ id ];
-                                       ListColumn.Alignment := GikoBoardColumnAlignment[ id ];
+                               if GikoSys.Setting.BoardColumnOrder[ i ] = gbcTitle then begin
+                                       TitleColumn.Tag := i;
+                                       idx := i;
+                               end else begin
+                                       id := Ord( GikoSys.Setting.BoardColumnOrder[ i ] );
+                                       if (Integer( Low( TGikoBoardColumnID ) ) <= id) and
+                                               (id <= Integer( High( TGikoBoardColumnID ) )) then begin
+                                               ListColumn := ListView.Columns.Add;
+                                               ListColumn.Caption := GikoBoardColumnCaption[ id ];
+       //                                      ListColumn.Tag := id;
+                                               ListColumn.Tag := i;
+                                               ListColumn.Width := GikoSys.Setting.BoardColumnWidth[ id ];
+                                               ListColumn.Alignment := GikoBoardColumnAlignment[ id ];
+                                       end;
                                end;
                        end;
+                       TitleColumn.Index := idx;
                end;
 
                ListView.Items.Count := 0;
@@ -3821,13 +3847,11 @@ begin
                Self.Caption := CAPTION_NAME;
                //Application.Title := CAPTION_NAME;
 
+//             ActiveListColumnSave;
+
                if Obj is TBBS then begin
-                       for i := 0 to ListView.Columns.Count - 1 do
-                               ListView.Column[i].Width := GikoSys.Setting.BBSColumnWidth[i];
                        SetCategoryListItem(TBBS(Obj));
                end else if Obj is TCategory then begin
-                       for i := 0 to ListView.Columns.Count - 1 do
-                               ListView.Column[i].Width := GikoSys.Setting.CategoryColumnWidth[i];
                        SetBoardListItem(TCategory(Obj));
                end else if Obj is TBoard then begin
                        SetThreadListItem(TBoard(Obj));
@@ -4398,16 +4422,7 @@ begin
                end;
        end else begin
                if Item <> FActiveList then begin
-                       if GetActiveList is TBBS then begin
-                               for i := 0 to ListView.Columns.Count - 1 do
-                                       GikoSys.Setting.BBSColumnWidth[i] := ListView.Column[i].Width;
-                       end else if GetActiveList is TCategory then begin
-                               for i := 0 to ListView.Columns.Count - 1 do
-                                       GikoSys.Setting.CategoryColumnWidth[i] := ListView.Column[i].Width;
-                       end else if GetActiveList is TBoard then begin
-                               for i := 0 to ListView.Columns.Count - 1 do
-                                       GikoSys.Setting.BoardColumnWidth[i] := ListView.Column[i].Width;
-                       end;
+                       ActiveListColumnSave;
 
                        if (Item is TBBS) or (Item is TCategory) then begin
                                ListView.Columns.Clear;
@@ -10400,16 +10415,7 @@ begin
                Exit;
        end;
 
-       if GetActiveList is TBBS then begin
-               for i := 0 to ListView.Columns.Count - 1 do
-                       GikoSys.Setting.BBSColumnWidth[i] := ListView.Column[i].Width;
-       end else if GetActiveList is TCategory then begin
-               for i := 0 to ListView.Columns.Count - 1 do
-                       GikoSys.Setting.CategoryColumnWidth[i] := ListView.Column[i].Width;
-       end else if GetActiveList is TBoard then begin
-               for i := 0 to ListView.Columns.Count - 1 do
-                       GikoSys.Setting.BoardColumnWidth[i] := ListView.Column[i].Width;
-       end;
+       ActiveListColumnSave;
 
        if TObject(Node.Data) is TBBS then begin
                SetActiveList(Node.data);
@@ -11323,6 +11329,79 @@ begin
        LoadTabURLs;
 end;
 
+procedure TGikoForm.ListViewColumnDragged(Sender: TObject);
+begin
+end;
+
+/// ListView \82Ì\83J\83\89\83\80\95\9d\82¨\82æ\82Ñ\88Ê\92u\82Ì\95Û\91
+procedure TGikoForm.ActiveListColumnSave;
+var
+       ActivListObj    : TObject;
+       i, id, idx              : Integer;
+       BBSOrder                        : TGikoBBSColumnList;
+       CategoryOrder   : TGikoCategoryColumnList;
+       BoardOrder              : TGikoBoardColumnList;
+begin
+
+       ActivListObj := ActiveList;
+       if ActivListObj is TBBS then begin
+               //===== \83J\83e\83S\83\8a\83\8a\83X\83g =====
+               BBSOrder := TGikoBBSColumnList.Create;
+               try
+                       for i := 0 to ListView.Columns.Count - 1 do begin
+                               // \8f\87\8f\98\82Ì\8eæ\93¾
+                               idx := ListView.Column[ i ].Tag;
+                               id := Ord( GikoSys.Setting.BBSColumnOrder[ idx ] );
+                               BBSOrder.Add( TGikoBBSColumnID( id ) );
+                               // \95\9d\82Ì\95Û\91
+                               GikoSys.Setting.BBSColumnWidth[ id ] := ListView.Column[ id ].Width;
+                       end;
+                       for i := 0 to ListView.Columns.Count - 1 do
+                               // \8f\87\8f\98\82Ì\95Û\91
+                               GikoSys.Setting.BBSColumnOrder[ i ] := BBSOrder[ i ];
+               finally
+                       BBSOrder.Free;
+               end;
+       end else if ActivListObj is TCategory then begin
+               //===== \94Â\83\8a\83X\83g =====
+               CategoryOrder := TGikoCategoryColumnList.Create;
+               try
+                       for i := 0 to ListView.Columns.Count - 1 do begin
+                               // \8f\87\8f\98\82Ì\8eæ\93¾
+                               idx := ListView.Column[ i ].Tag;
+                               id := Ord( GikoSys.Setting.CategoryColumnOrder[ idx ] );
+                               CategoryOrder.Add( TGikoCategoryColumnID( id ) );
+                               // \95\9d\82Ì\95Û\91
+                               GikoSys.Setting.CategoryColumnWidth[ id ] := ListView.Column[ id ].Width;
+                       end;
+                       for i := 0 to ListView.Columns.Count - 1 do
+                               // \8f\87\8f\98\82Ì\95Û\91
+                               GikoSys.Setting.CategoryColumnOrder[ i ] := CategoryOrder[ i ];
+               finally
+                       CategoryOrder.Free;
+               end;
+       end else if ActivListObj is TBoard then begin
+               //===== \83X\83\8c\83\8a\83X\83g =====
+               BoardOrder := TGikoBoardColumnList.Create;
+               try
+                       for i := 0 to ListView.Columns.Count - 1 do begin
+                               // \8f\87\8f\98\82Ì\8eæ\93¾
+                               idx := ListView.Column[ i ].Tag;
+                               id := Ord( GikoSys.Setting.BoardColumnOrder[ idx ] );
+                               BoardOrder.Add( TGikoBoardColumnID( id ) );
+                               // \95\9d\82Ì\95Û\91
+                               GikoSys.Setting.BoardColumnWidth[i] := ListView.Column[i].Width;
+                       end;
+                       for i := 0 to ListView.Columns.Count - 1 do
+                               // \8f\87\8f\98\82Ì\95Û\91
+                               GikoSys.Setting.BoardColumnOrder[ i ] := BoardOrder[ i ];
+               finally
+                       BoardOrder.Free;
+               end;
+       end;
+       
+end;
+
 initialization
                                OleInitialize(nil);
 finalization