¡¡¡¡¾³£Ê¹ÓÃTDBGridµÄÓû§¶¼ÖªµÀ£¬ËüûÓÐÌṩÕâÑùµÄÒ»ÖÖÑ¡Ôñ£¬Ê¹µÃÎÒÃÇÄܹ»ÈÃËüµÄÿһÁÐÓëËùÒªÏÔʾµÄÊý¾ÝµÄ¿í¶ÈÏàÆ¥Å䡣ʹµÃÓû§ÐèÒªÔÚ³ÌÐòÔËÐÐʱ£¬ÊÖ¹¤¶ÔÿһÁнøÐе÷Õû£¬ÔÚÏ´ÎÔËÐÐÕâ¸ö³ÌÐòʱÓÖµÃÔÙ×öÒ»±éͬÑùµÄ¹¤×÷£¨Í¼1£©¡£

¡¡¡¡ÔÚ½øÐÐÐ޸ĺó£¬ÎÒÃÇ¿ÉÒԵõ½Ò»¸ö¸ü¼ÓÖÇÄÜ»¯µÄTDBGrid£¬Èç¹ûTDBGridÖÐËùÓÐÁеĿí¶È¼ÓÆðÀ´´óÓÚËü±¾ÉíµÄ¿í¶È£¬ÄÇôÖÇÄÜ»¯µÄTDBGrid½«»áÔÚËüËùº¬µÄ×îºóÒ»ÁеÄÓÒ±ßÁô³ö¿Õ°×£¨¼ûͼ2£©£»·´Ö®Èç¹ûTDBGridÖÐËùÓÐÁеĿí¶È¼ÓÆðÀ´Ð¡ÓÚËü±¾ÉíµÄ¿í¶È£¬Ôò»áÔÚËüµÄϲ¿ÏÔʾһ¸öˮƽ¹ö¶¯Ìõ£¬Óû§¾Í¿ÉÒÔ×óÓÒÍ϶¯¸Ã¹ö¶¯Ìõ£¬ÏÔʾ¸ü¶àÏëÒªµÄÄÚÈÝ¡£

¡¡¡¡½â¾ö·½°¸£º
¡¡¡¡ÔÚ±¾ÎÄÖÐÎÒ½«Ìṩһ¸ö¼ò±ãµÄ¹ý³Ì£¨Procedure)À´½â¾öÉÏÃæµÄÎÊÌ⣬ËüÄܹ»ÔÚ³ÌÐòÔËÐÐʱ×Ô¶¯¹Ì¶¨TDBGridÖÐËùÏÔʾÁеĿí¶È¡£
¡¡¡¡Ê×ÏÈ£¬ÔÚTFormµÄOnCreateʼþÖÐÌí¼ÓÏÂÃæµÄ´úÂ룺
Procedure TForm1.FormCreate(Sender: TObject);
¡¡begin
¡¡//ÔÚTagÊôÐÔÖÐÉèÖÃÐèÒª×Ô¶¯µ÷ÕûµÄÁеÄ×îС¿í¶È£¨¹Ì¶¨Öµ£©
¡¡//ÕâÀォÁпíÖµÉèΪ40px
¡¡Table1.FieldByName('FirstName').Tag := 40;
¡¡//ÕâÀïÉèÖÃÒ»¸ö±ä»¯µÄÖµ
¡¡//¸ÃÖµÊÇ×ö¹ýÔËËãµÄÁбêÌâµÄ¿í¶ÈÖµ
¡¡Table1.FieldByName('LastName').Tag := 4 Canvas.TextWidth( Table1.FieldByName('LastName').DisplayName);
end;
¡¡¡¡Æä´Î£¬×î¹Ø¼üµÄÒ»¸ö¹ý³Ì£¨Procedure)£¬¾ÍÊÇÓÃËüÀ´¿ØÖÆÁеĿí¶È£º
Procedure FixDBGridColumnsWidth(const DBGrid: TDBGrid);
var
¡¡i : integer;
¡¡TotWidth : integer;//¶¨ÒåÕû¸ö¿í¶È
¡¡VarWidth : integer;//¶¨Òå±ä»¯µÄ¿í¶È
¡¡ResizableColumnCount : integer;//¶¨Òå±ä»¯¿í¶ÈÁеÄ×ÜÊý
¡¡AColumn : TColumn;
begin
¡¡//ÔÚÖØÐµ÷ÕûǰËùÓÐÁеĿí¶È
¡¡TotWidth := 0;
¡¡VarWidth := 0;
¡¡//ÓжàÉÙÁÐÐèÒª×Ô¶¯µ÷Õû
¡¡ResizableColumnCount := 0;
¡¡for i := 0 to -1 DBGrid.Columns.Count do
¡¡begin
¡¡¡¡TotWidth := TotWidth DBGrid.Columns[i].Width;
¡¡¡¡if DBGrid.Columns[i].Field.Tag <> 0 then
¡¡¡¡¡¡Inc(ResizableColumnCount);
¡¡end;
¡¡//Ϊÿ¸öÁзָôÏßÔö¼Ó1PX
¡¡if dgColLines in DBGrid.Options then
¡¡¡¡TotWidth := TotWidth DBGrid.Columns.Count;
¡¡if dgIndicator in DBGrid.Options then
¡¡¡¡TotWidth := TotWidth IndicatorWidth;
¡¡VarWidth := DBGrid.ClientWidth - TotWidth;
¡¡//ƽ¾ù·ÖÅä±ä»¯¿í¶ÈµÄÖµ
¡¡//¸øËùÓÐÐèÒª×Ô¶¯µ÷ÕûµÄÁÐ
¡¡if ResizableColumnCount > 0 then
¡¡¡¡VarWidth := varWidth div ResizableColumnCount;
¡¡for i := 0 to -1 DBGrid.Columns.Count do
¡¡begin
¡¡¡¡AColumn := DBGrid.Columns[i];
¡¡¡¡if AColumn.Field.Tag <> 0 then
¡¡¡¡begin
¡¡¡¡¡¡AColumn.Width := AColumn.Width VarWidth;
¡¡¡¡¡¡if AColumn.Width < AColumn.Field.Tag then
¡¡¡¡¡¡¡¡AColumn.Width := AColumn.Field.Tag;
¡¡¡¡end;
¡¡end;
end;
¡¡¡¡×îºó£¬Ó¦ÓÃÕâÒ»¸öº¯Êý:
Procedure TForm1.FormResize(Sender: TObject);
begin
¡¡FixDBGridColumnsWidth(DBGrid1);
end;
¡¡¡¡ÉÏÃæÒ»¸ö¼òµ¥µÄº¯Êý½â¾öÁ˾³£»áÅöµ½µÄ¹ØÓÚÊý¾ÝÁеÄÎÊÌ⣬Óöµ½ÎÊÌâʱ¶à¶à¿ª¶¯ÄԽ¶ø²»ÒªÒ»Î¶µÄÈ¥ÕÒµÚÈý·½¿Ø¼þ£¬ÕâÑù³¤ÆÚ¼á³ÖÏÂÈ¥¾Í»áÕæÕýÌá¸ß×Ô¼ºµÄˮƽ£¬²Å»á´ÓÒ»Ãû³ÌÐòÄàË®½³±ä³ÉÕæÕýµÄÈí¼þÉè¼ÆÊ¦¡£
ÉÏһƪ£º Ïë³É¸ßÊÖÂð?¿ìÀ´Ñ§Delphi¿ì½Ý¼ü
ÏÂһƪ£º dz̸DelphiÈçºÎ¿ØÖÆExcel²Ù×÷
ÎÄÕÂÕûÀí£ºÎ÷²¿ÊýÂë--רҵÌṩÓòÃû×¢²á¡¢ÐéÄâÖ÷»ú·þÎñ
http://www.west263.com
ÒÔÉÏÐÅÏ¢ÓëÎÄÕÂÕýÎÄÊDz»¿É·Ö¸îµÄÒ»²¿·Ö,Èç¹ûÄúÒª×ªÔØ±¾ÎÄÕÂ,Çë±£ÁôÒÔÉÏÐÅÏ¢£¬Ð»Ð»!




