ÊÖ»úÕ¾
ÍøÍ¨·ÖÕ¾
µçÐÅÖ÷Õ¾
ÃÜ¡¡Âë:
Óû§Ãû£º
µ±Ç°Î»Öà : Ö÷Ò³>³ÌÐòÉè¼Æ>delphi>Áбí

DelphiÖÐʵÏÖDBGridÁпí¶È×Ô¶¯µ÷Õû

À´Ô´£º»¥ÁªÍø ×÷Õߣºwest263.com ʱ¼ä£º2008-02-23
Î÷²¿ÊýÂë-È«¹úÐéÄâÖ÷»ú10Ç¿£¡40ÓàÏîÐéÄâÖ÷»ú¹ÜÀí¹¦ÄÜ,È«¹úÁìÏÈ!Ë«Ïß¶àÏßÐéÄâÖ÷»úÄϱ±·ÃÎʳ©Í¨ÎÞ×è!Ãâ·ÑÔùËÍÆóÒµÓʾÖ,.CNÓòÃû,×ÔÖú½¨Õ¾480ÔªÆð,Ãâ·ÑÊÔÓÃ7Ìì,ÂúÒâÔÙ¸¶¿î! P4Ö÷»ú×âÓÃ799Ôª/ÔÂ.Ô¸¶Ãâѹ½ð!
´ó¶àÊý³ÌÐòÉè¼ÆµÄ°®ºÃÕßÑ¡Ôñ²¢Ê¹ÓÃDelphiÀ´±àдÈí¼þ£¬¶¼ÊDZ»ÆäÖзḻ¶ø¹¦ÄÜÇ¿´óµÄVCL¿Ø¼þËùÎüÒý¡£Delphi×Ô´øµÄÊý¾Ý¸ÐÖª(Data-Aware)¿Ø¼þ£¬¸üÊdzÉΪ¿ª·¢MISÈí¼þµÄ³ÌÐòÔ±Ö®Ê×Ñ¡¡£ÔÚÄÇô¶àÊý¾Ý¸ÐÖª¿Ø¼þÖУ¬TDBGridÓÉÓÚÆäʹÓ÷½±ã¡¢ÏÔʾÐÅÏ¢Á¿´ó³ÉΪ×îÒýÈËעĿµÄÒ»Ô±£¬´óÁ¿µÄ¹úÄÚÍâÈí¼þÖж¼³öÏÖÁËËüµÄÉíÓ°¡£»òÐíÊÇÓÉÓÚʹÓõÄÈ˶àÁË£¬¶ÔÓÚËüµÄÆÚÍûÒ²»á¸ü¸ß£¬ÓÀÔ¶×·ÇóÎÞÏÞÇ÷ÏòÓÚÍêÃÀ¾³½çµÄ³ÌÐòÔ±²»»á·Å¹ýÿһ¸öÄܹ»¸ÄÁ¼TDBGridµÄ»ú»á¡£

¡¡¡¡¾­³£Ê¹ÓÃ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»¿É·Ö¸îµÄÒ»²¿·Ö,Èç¹ûÄúÒª×ªÔØ±¾ÎÄÕÂ,Çë±£ÁôÒÔÉÏÐÅÏ¢£¬Ð»Ð»!