TListView控件Columns首次不能正常显示问题

Description of your first forum.

TListView控件Columns首次不能正常显示问题

帖子Morling » 星期三, 2004年10月13日 21:55


delphi中的TListView控件放置在PageControl中时,第一次显示时Columns的标题不能显示,切换一下页面再回来才显示。有哪位知道解决方案吗?
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ComCtrls, ImgList;

type
 TForm1 = class(TForm)
   PageControl1: TPageControl;
   TabSheet1: TTabSheet;
   ListView1: TListView;
   TabSheet2: TTabSheet;
   TreeView1: TTreeView;
   ListView2: TListView;
   ImageList1: TImageList;
   procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
 if Node.Level = 0 then
 begin
   TabSheet1.TabVisible := True;
   TabSheet2.TabVisible := False;
   PageControl1.ActivePage := TabSheet1;
   ListView1.Items.BeginUpdate;
   ListView1.Items.EndUpdate;
 end
 else begin
   TabSheet1.TabVisible := False;
   TabSheet2.TabVisible := True;
   PageControl1.ActivePage := TabSheet2;
   ListView2.Items.BeginUpdate;
   ListView2.Items.EndUpdate;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 TreeView1.Selected := TreeView1.Items[0]
end;

end.

object Form1: TForm1
 Left = 192
 Top = 107
 Width = 696
 Height = 480
 Caption = 'Form1'
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = 'MS Sans Serif'
 Font.Style = []
 OldCreateOrder = False
 OnCreate = FormCreate
 PixelsPerInch = 96
 TextHeight = 13
 object PageControl1: TPageControl
   Left = 237
   Top = 0
   Width = 451
   Height = 453
   ActivePage = TabSheet1
   Align = alClient
   TabOrder = 0
   object TabSheet1: TTabSheet
     Caption = 'TabSheet1'
     object ListView1: TListView
       Left = 0
       Top = 0
       Width = 443
       Height = 425
       Align = alClient
       Columns = <
         item
           Caption = '1'
         end
         item
           Caption = '2'
         end
         item
           Caption = '3'
         end>
       GridLines = True
       ReadOnly = True
       SmallImages = ImageList1
       TabOrder = 0
       ViewStyle = vsReport
     end
   end
   object TabSheet2: TTabSheet
     Caption = 'TabSheet2'
     ImageIndex = 1
     object ListView2: TListView
       Left = 0
       Top = 0
       Width = 443
       Height = 425
       Align = alClient
       Columns = <
         item
           Caption = '1'
         end
         item
           Caption = '2'
         end
         item
           Caption = '3'
         end>
       GridLines = True
       ReadOnly = True
       SmallImages = ImageList1
       TabOrder = 0
       ViewStyle = vsReport
     end
   end
 end
 object TreeView1: TTreeView
   Left = 0
   Top = 0
   Width = 237
   Height = 453
   Align = alLeft
   Indent = 19
   TabOrder = 1
   OnChange = TreeView1Change
   Items.Data = {
     010000001A0000000000000000000000FFFFFFFFFFFFFFFF0000000001000000
     01321A0000000000000000000000FFFFFFFFFFFFFFFF00000000000000000133}
 end
 object ImageList1: TImageList
   Left = 140
   Top = 124
 end
end

点击界面树节点子节点后,TabSheet2中的TListView控件的标题列无法正常显示。
 
 
 

TListView控件Columns首次不能正常显示问题

帖子Morling » 星期三, 2004年10月13日 21:57


这里BeginUpdate和EndUpdate为示例,实际应用中这段代码之间为列表的填充代码。
 
 
 

TListView控件Columns首次不能正常显示问题

帖子陷队之士 » 星期三, 2004年10月13日 22:19


procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
 LockWindowUpdate(Handle); //这里
 if Node.Level = 0 then
 begin
   TabSheet1.TabVisible := True;
   TabSheet2.TabVisible := False;
   PageControl1.ActivePage := TabSheet1;
   ListView1.Items.BeginUpdate;
   ListView1.Items.EndUpdate;
 end
 else begin
   TabSheet1.TabVisible := False;
   TabSheet2.TabVisible := True;
   PageControl1.ActivePage := TabSheet2;
   ListView2.Items.BeginUpdate;
   ListView2.Items.EndUpdate;
 end;
 LockWindowUpdate(0); //这里
end;
 
 
 

TListView控件Columns首次不能正常显示问题

帖子lichengbin » 星期四, 2004年10月14日 12:37


ListView2.Repaint;
 
 
 

TListView控件Columns首次不能正常显示问题

帖子Morling » 星期四, 2004年10月14日 20:37


lichenbin这种方法我试过,不行的。