ÀúÀ۱ǿ¡ ´ëÇÑ °øÁö
ÀÌ ¹®¼­¿¡ Æ÷ÇÔµÈ ¸ðµç ±Û°ú ¼Ò½º ÄÚµå´Â ÀÛÀÚÀÎ Àú ±è¼ºµ¿ÀÇ ÁöÀû Àç»êÀÌÁö¸¸ ¹«´ÜÀ¸·Î ¹èÆ÷Çϰųª Ã¥À̳ª °­ÀÇ ±³ÀçµîÀ» À§ÇÑ º¹Á¦ µî ÀúÀÛ±ÇÀ» ÀúÇØÇÏ´Â ÇàÀ§¸¦ Á¦¿ÜÇϰí´Â ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¶ÇÇÑ ÀÌ ÆäÀÌÁö¿¡ ´ëÇÑ ¸µÅ©´Â ÀÚÀ¯·Ó°Ô ÇÒ ¼ö ÀÖÀ¸³ª Àü¹®À» ÀüÁ¦ÇÏ´Â ÀÏÀº Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù.


2. ÄÞÆ÷³ÍÆ® °³¹ß ½ÇÀü

2.1. °³¿ä

À̹ø Àå¿¡¼­´Â 1Àå¿¡¼­ °øºÎÇÑ ÄÞÆ÷³ÍÆ®¸¦ ¸¸µé±â À§ÇÑ ±âÃÊ Áö½ÄÀ» ¹ÙÅÁÀ¸·Î °£´ÜÇÑ ÄÞÆ÷³ÍÆ®µéÀ» Á÷Á¢ ¸¸µé¾î º¸µµ·Ï ÇϰڴÙ...

2.2. ÄÞÆ÷³ÍÆ® °³¹ß °úÁ¤

ÄÞÆ÷³ÍÆ®¸¦ °³¹ßÇÏ´Â °úÁ¤Àº µ¨ÆÄÀÌ·Î ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â °Í°ú »ç¹µ ´Ù¸¥ °úÁ¤À» °ÅÄ£´Ù. ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÒ ¶§´Â ´ëºÎºÐÀÇ °æ¿ì µ¨ÆÄÀÌ File|New Application ¸Þ´º¸¦ ¼±ÅÃÇØ¼­ ¾îÇø®ÄÉÀ̼ÇÀÇ °ñ°ÝÀ» »ý¼ºÇÑ ´ÙÀ½ ÇÊ¿äÇÑ °¢Á¾ ÆûÀ» »ý¼ºÇÑ´Ù. ±×¸®°í »ý¼ºµÈ ÆûÀ» ÀûÀýÇÏ°Ô ¼³°èÇÏ°í ºñÁî´Ï½º ·ÎÁ÷¿¡ µû¶ó À̺¥Æ® Çڵ鷯¸¦ ÀÛ¼ºÇØ ÁÖ°í ³ª¼­ ÄÄÆÄÀÏ ÇÏ¸é µÈ´Ù. ÇÏÁö¸¸ ÄÞÆ÷³ÍÆ®¸¦ °³¹ßÇÒ ¶§¿¡´Â ¸ÕÀú ¾î¶² ÄÞÆ÷³ÍÆ®¸¦ ¸¸µé°íÀÚ ÇÏ´ÂÁö¿¡ µû¶ó ºÎ¸ð Ŭ·¡½º¸¦ °áÁ¤ÇØ¾ß Çϰí ÀÏÀÏÀÌ ÆÄ»ýµÈ Ŭ·¡½º¸¦ ±¸ÇöÇØ ÁÖ¾î¾ß ÇÑ´Ù. ±×¸®°í ½ÇÇà ½Ã¿Í ¼³°è ½Ã¿¡ ÄÞÆ÷³ÍÆ®°¡ ¸ñÀûÇÏ´Â ´ë·Î µ¿ÀÛÇÏ´ÂÁö °Ë»çÇÏ´Â °úÁ¤À» °ÅÄ£ ´ÙÀ½ ÄÞÆ÷³ÍÆ®¸¦ ¼³°è ½Ã¿¡ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÄÞÆ÷³ÍÆ® ÆÈ·¹Æ®¿¡ µî·Ïµµ ÇØ ÁÖ¾î¾ß ÇÑ´Ù.
°³¹ß °úÁ¤À» ½±°Ô ÀÌÇØÇϱâ À§ÇØ °£´ÜÇÑ ÄÞÆ÷³ÍÆ®¸¦ Çϳª ¸¸µé¾î º¸°Ú´Ù. ÀÌ ÄÞÆ÷³ÍÆ®´Â ½Ã½ºÅÛ¿¡¼­ »ç¿ë °¡´ÉÇÑ ±Û²Ã¿¡ ´ëÇÑ ¸®½ºÆ®¸¦ º¸¿© ÁÖ´Â ¸®½ºÆ® ¹Ú½º ÄÞÆ÷³ÍÆ®·Î¼­ È­¸é ±Û²Ã°ú Àμ⠱۲à °¢°¢ ¶Ç´Â ¸ðµÎ¸¦ º¸¿©ÁÖµµ·Ï ÇÒ °ÍÀÌ´Ù. ÄÞÆ÷³ÍÆ®ÀÇ À̸§Àº TdpbFontListBox·Î ÇϰڴÙ.
2.2.1. ºÎ¸ð Ŭ·¡½º °áÁ¤
ºÎ¸ð Ŭ·¡½º¸¦ °áÁ¤ÇÏ´Â °ÍÀº ÄÞÆ÷³ÍÆ® °³¹ß¿¡ ÀÖ¾î ¾ÆÁÖ Áß¿äÇÏ´Ù. ±âÁ¸¿¡ ÀÖ´Â ÄÞÆ÷³ÍÆ®¿¡ ±â´ÉÀ» Ãß°¡Çؼ­ È®ÀåÇÏ°í ½ÍÀº °æ¿ì¿¡´Â ±âÁ¸¿¡ ÀÖ´Â ¸¹Àº ÄÞÆ÷³ÍÆ®µéÀ» ºÎ¸ð Ŭ·¡½º·Î °áÁ¤ÇÏ¸é µÈ´Ù. TdpbFontListBoxÀÇ °æ¿ì¿¡´Â ¸®½ºÆ® ¹Ú½ºÀÇ ±â´É¿¡ ±Û²Ã ¸®½ºÆ®¸¸ º¸¿© ÁÖ´Â ±â´É¸¸ Ãß°¡ÇÏ¸é µÇ¹Ç·Î TCustomListBox Ŭ·¡½º¸¦ ºÎ¸ð Ŭ·¡½º·Î ¼±ÅÃÇÏ¸é µÉ °ÍÀÌ´Ù. óÀ½ºÎÅÍ ¿ÏÀüÈ÷ »õ·Î¿î ÄÞÆ÷³ÍÆ®¸¦ °³¹ßÇÏ·Á ÇÑ´Ù¸é ÀÌÀü ÀåÀÇ VCL Àý¿¡¼­µµ ¾ê±âÇßµíÀÌ TComponent, TGraphicControl, TWinControl, TCustomControl Ŭ·¡½º µîÀ» ºÎ¸ð Ŭ·¡½º·Î »ç¿ëÇÑ´Ù.
2.2.2. ÄÞÆ÷³ÍÆ® ÀÛ¼º
ºÎ¸ð Ŭ·¡½º¸¦ °áÁ¤ÇßÀ¸¸é ÄÞÆ÷³ÍÆ®¸¦ ½ÇÁ¦·Î ±¸ÇöÇÒ À¯´Ö ÆÄÀÏÀ» ¸¸µç´Ù. À¯´Ö ÆÄÀÏÀº ÄÞÆ÷³ÍÆ® ¿¢½ºÆÛÆ®¸¦ ÀÌ¿ëÇÏ¸é ½±°Ô ¸¸µé ¼ö ÀÖ´Ù.
µ¨ÆÄÀÌ Component ¸Þ´º¿¡¼­ New Component¸¦ ¼±ÅÃÇÏ¸é ¾Æ·¡ ±×¸²Ã³·³ ÄÞÆ÷³ÍÆ® ¿¢½ºÆÛÆ®°¡ ³ªÅ¸³­´Ù. ¸ÕÀú ºÎ¸ð Ŭ·¡½º¸¦ ¼±ÅÃÇÏ°í »õ·Î ¸¸µé Ŭ·¡½ºÀÇ À̸§À» ÀÔ·ÂÇÑ´Ù. ±×¸®°í ÄÞÆ÷³ÍÆ®¸¦ µ¨ÆÄÀÌ IDE¿¡ ¼³Ä¡ÇÒ ¶§ ÄÞÆ÷³ÍÆ® ÆÈ·¹Æ®ÀÇ ¾î¶² ÆäÀÌÁö¿¡ µî·ÏÇÒÁö¸¦ ¼±ÅÃÇÑ´Ù. ÆÈ·¹Æ® ÆäÀÌÁö¸¦ »õ·Î ¸¸µé·Á¸é ±×³É »õ·Î ¸¸µé ÆäÀÌÁöÀÇ À̸§À» ÀÔ·ÂÇØ ÁØ´Ù. ±× ´ÙÀ½ ÄÞÆ÷³ÍÆ®ÀÇ À¯´Ö ÆÄÀÏÀ̸§À» ÁöÁ¤ÇÑ´Ù. ¸¶Áö¸·À¸·Î À¯´Ö ÆÄÀÏÀ» ÀúÀåÇÒ µð·ºÅ丮°¡ ±âÁ¸ ¶óÀ̺귯¸® °Ë»ö °æ·Î¿¡ ¾ø´Ù¸é À¯´Ö ÆÄÀÏÀÌ ÀÖ´Â °æ·Î¸¦ °Ë»ö °æ·Î¿¡ ÀÔ·ÂÇØ ÁØ´Ù.
ÄÞÆ÷³ÍÆ®ÀÇ À̸§À» ÁöÀ» ¶§´Â ÄÞÆ÷³ÍÆ®ÀÇ ¿ªÇÒÀ» Àß Ç¥ÇöÇÏ´Â À̸§À» »ç¿ëÇÑ´Ù. ±×·±µ¥ ¾Æ·¡ ±×¸²¿¡¼­´Â TdpbFontListBox¶ó°í À̸§À» Áö¾ú´Âµ¥ dpb´Â ¹»±î¶ó°í »ý°¢ÇÏ´Â µ¶ÀÚ°¡ ÀÖÀ» °ÍÀÌ´Ù. µ¨ÆÄÀÌ¿¡¼­ ¸ðµç Ŭ·¡½ºÀÇ À̸§Àº À¯ÀÏÇØ¾ß ÇÑ´Ù. µû¶ó¼­ ¸¸¾à¿¡ µ¶ÀÚ°¡ TFontListBox¶ó´Â ÄÞÆ÷³ÍÆ®¸¦ ¸¸µé¾î¼­ ¹èÆ÷Çϴµ¥ ´Ù¸¥ °³¹ßÀÚ°¡ °°Àº À̸§À» »ç¿ëÇÑ´Ù¸é Ãæµ¹ÀÌ ¹ß»ýÇÏ°Ô µÈ´Ù. ÀÌ¿Í °°ÀÌ À̸§¿¡ ÀÇÇØ ¹ß»ýÇÏ´Â Ãæµ¹À» ÃÖ¼ÒÈ­ÇϰíÀÚ ÀÌ Ã¥ÀÇ Á¦¸ñÀÎ Delphi Programming BibleÀÇ ¾àÀÚ¸¦ »ç¿ëÇØ¼­ dpb¶ó´Â Á¢µÎ¾î¸¦ ºÙÀÎ °ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÌ·¸°Ô ÇØÁشٰí ÇØ¼­ Ãæµ¹ÀÌ ¹ß»ýÇÏÁö ¸»¶ó´Â ¹ýÀº ¾ø´Ù. ±×·¡¼­ ÀÎÅͳÝÀÇ µ¨ÆÄÀÌ Ä¿¹Â´ÏƼ¿¡¼­´Â ºñ·Ï °­Á¦¼ºÀº ¾øÁö¸¸ ³»°¡ »ç¿ëÇÏ´Â Á¢µÎ¾î¸¦ µî·ÏÇØ¼­ °¡±ÞÀûÀÌ¸é ´Ù¸¥ °³¹ßÀÚ°¡ »ç¿ëÇÏÁö ¾Êµµ·Ï ÇØ ÁÖ´Â »çÀÌÆ®(http://developers.href.com/-dpr:homepage)¸¦ ¸¸µé°Ô µÇ¾ú´Ù. ¸¸¾à¿¡ »ó¿ë ÄÞÆ÷³ÍÆ®¸¦ °³¹ßÇÏ´Â °³¹ßÀÚ¶ó¸é ÀÌ »çÀÌÆ®¿¡¼­ Á¢µÎ¾î¸¦ µî·ÏÇØ ÁÖ´Â °ÍÀÌ ÁÁÀ» °ÍÀÌ´Ù. ¿¹·Î Raize Components´Â rz, TurboPower»çÀÇ AsyncPro´Â apd, Orpheus´Â ovc, TopSupport»çÀÇ TopGrid´Â ts¸¦ »ç¿ëÇÑ´Ù.

±×¸² 2-1 ÄÞÆ÷³ÍÆ® ¿¢½ºÆÛÆ®


ÄÞÆ÷³ÍÆ® ¿¢½ºÆÛÆ®¸¦ ½ÇÇàÇØ¼­ À§ÀÇ ±×¸²Ã³·³ ÀÔ·ÂÇϰí OK ¹öưÀ» ´©¸£¸é ¾Æ·¡¿Í °°Àº Äڵ尡 »ý¼ºµÉ °ÍÀÌ´Ù.

¸®½ºÆ® 2.1 dpbFontListBox.pas
unit dpbFontListBox;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TdpbFontListBox = class(TCustomListBox)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('dpb', [TdpbFontListBox]);
end;

end.


¸»ÀÌ ¿¢½ºÆÛƼÀÌÁö ½ÇÁ¦·Î ÇØÁÖ´Â °Ç °ÅÀÇ ¾ø´Ù. Ŭ·¡½ºÀÇ °¡Àå ±âº»ÀûÀÎ »À´ë¿Í ÄÞÆ÷³ÍÆ® µî·ÏÀ» À§ÇÑ ÇÁ·Î½ÃÀúÀÎ Register¸¸ ¸¸µé¾î ÁØ´Ù. ¶§¹®¿¡ ±»ÀÌ ÄÞÆ÷³ÍÆ® ¿¢½ºÆÛÆ®¸¦ »ç¿ëÇÏÁö ¾Ê°í »õ À¯´ÖÀ» ¸¸µé¾î¼­ Á÷Á¢ ÄÚµùÇÏ´Â °³¹ßÀڵ鵵 ¸¹´Ù. °æÁ¦ÀûÀ¸·Î ¿©À¯ ÀÖ´Â °³¹ßÀÚµéÀº 6ÀåÀÇ Ã³À½¿¡ ¾ê±âÇÑ »ó¿ë ¶Ç´Â °ø°³ ÄÞÆ÷³ÍÆ® ¿¢½ºÆÛÆ®¸¦ »ç¿ëÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù.
Register ÇÁ·Î½ÃÀú´Â ÄÞÆ÷³ÍÆ®¸¦ µ¨ÆÄÀÌ IDE¿¡ µî·ÏÇÒ ¶§ »ç¿ëÇÏ´Â ÇÁ·Î½ÃÀúÀÌ´Ù. ÄÞÆ÷³ÍÆ®°¡ µ¨ÆÄÀÌ IDE¿¡ Á¤»óÀûÀ¸·Î ¼³Ä¡µÇ¸é ±× ÄÞÆ÷³ÍÆ®´Â ¼³°è ½Ã¿¡ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÄÞÆ÷³ÍÆ® ÆÈ·¹Æ®¿¡ ³ªÅ¸³­´Ù. ÄÞÆ÷³ÍÆ®¸¦ µî·ÏÇÒ ÆÈ·¹Æ® ÆäÀÌÁöÀÇ À̸§°ú µî·ÏÇÒ ÄÞÆ÷³ÍÆ® ¸®½ºÆ®¸¦ ÀÎÀÚ·Î ÀÔ·ÂÇØ ÁÖ¸é µÈ´Ù. µî·ÏµÇÁö ¾ÊÀº ÄÞÆ÷³ÍÆ®´Â ÄÞÆ÷³ÍÆ® ÆÈ·¹Æ®¿¡ ³ªÅ¸³ªÁö ¾Ê±â ¶§¹®¿¡ ¼³°è ½Ã¿¡ »ç¿ëÇÒ ¼ö ¾ø´Ù. ¶§¹®¿¡ ÄÞÆ÷³ÍÆ®¸¦ ¼³°è ½Ã¿¡ »ç¿ëÇÏ°í ½Í´Ù¸é ¹Ýµå½Ã Register ÇÁ·Î½ÃÀú¸¦ Á¦°øÇØ ÁÖ¾î¾ß ÇÑ´Ù.
¿ÀºêÁ§Æ® ÆÄ½ºÄ® ÄÄÆÄÀÏ·¯´Â ÄÚµåÀÇ ´ë/¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê´Â´Ù. ±×·¡¼­ procedure, Procedure, PROCEDURE´Â ¸ðµÎ °°Àº Ű¿öµå·Î ÀνĵȴÙ. ÇÏÁö¸¸ ´Ü Çϳª ¿¹¿Ü°¡ ÀÖ´Ù. ÄÞÆ÷³ÍÆ®¸¦ ÆÈ·¹Æ®¿¡ µî·ÏÇÒ ¶§ »ç¿ëµÇ´Â ÇÁ·Î½ÃÀúÀÎ Register´Â ¹Ýµå½Ã ù ±ÛÀÚ¸¸ ´ë¹®ÀÚ·Î ½á¾ß ÇÑ´Ù. ¿Ö³ÄÇϸé VCLÀº º¼·£µåÀÇ ¶Ç ´Ù¸¥ RAD ÅøÀÎ C++ Builder¿¡¼­µµ ±×´ë·Î »ç¿ëÇϴµ¥ ´ë/¼Ò¹®ÀÚ¸¦ °¡¸®´Â C++ Builder¿ÍÀÇ È£È¯¼ºÀ» À¯ÁöÇϱâ À§ÇØ ÄÞÆ÷³ÍÆ® µî·Ï ÇÁ·Î½ÃÀú Register¸¸Àº ¹Ýµå½Ã ù ±ÛÀÚ¸¸ ´ë¹®ÀÚ·Î ½á¾ß ÇÑ´Ù.
»õ·Î ¸¸µé ÄÞÆ÷³ÍÆ®ÀÇ »À´ë´Â ÄÞÆ÷³ÍÆ® ¿¢½ºÆÛÆ®¸¦ ÀÌ¿ëÇØ¼­ ¸¸µé¾úÀ¸´Ï ÀÌÁ¦ ¿ì¸®°¡ ¸¸µé·Á°í ÇÏ´Â ÄÞÆ÷³ÍÆ®ÀÇ ±â´ÉÀ» ÀÛ¼ºÇØ º¸ÀÚ. ±Û²Ã ¸®½ºÆ®¸¦ º¸¿© ÁÖ´Â ÄÞÆ÷³ÍÆ®À̹ǷΠ±Û²Ã µð¹ÙÀ̽º¸¦ ¼±ÅÃÇÏ´Â ÇÁ·ÎÆÛƼ¿Í ÇöÀç ¼±ÅÃµÈ ±Û²ÃÀ» ¾Ë ¼ö ÀÖ´Â ÇÁ·ÎÆÛƼ¸¦ Ãß°¡ÇÏ°í ±Û²Ã ¸®½ºÆ®¸¦ Items ÇÁ·ÎÆÛƼ¿¡ ÀÚµ¿À¸·Î ä¿ö ÁÖ´Â ÇÁ·Î½ÃÀú¸¦ ¸¸µé¾î¾ß°Ú´Ù.
Protected ¿µ¿ª¿¡ ¾Æ·¡ Äڵ带 Ãß°¡Çϰí

procedure CreateWnd; override;
procedure FillFontList;


Public ¿µ¿ª¿¡ ¾Æ·¡ Äڵ带 Ãß°¡Çϰí

constructor Create(AOwner : TComponent); override;
property SelectedFont : string read GetSelectedFont write SetSelectedFont;


Published ¿µ¿ª¿¡ ¾Æ·¡ Äڵ带 Ãß°¡ÇÑ´Ù.

property Device : TdpbFontDevice read FDevice write SetDevie;


¿©±â±îÁö ÀÔ·ÂÇÑ »óÅ¿¡¼­ µ¨ÆÄÀÌ 4.0ºÎÅÍ Á¦°øµÇ¾î ¿Â Code Completion ±â´ÉÀ» ÀÌ¿ëÇØ º¸ÀÚ. Ä¿¼­¸¦ Ŭ·¡½º°¡ ¼±¾ðµÈ ¿µ¿ª ³»¿¡ ÀÖµµ·Ï À̵¿ÇØ ÁÖ°í Shift+Ctrl+C ۸¦ ´­·¯ º¸ÀÚ. µ¨ÆÄÀ̰¡ ÀÚµ¿À¸·Î ±¸ÇöÇØ¾ßÇÒ ÇÁ·Î½ÃÀú¿Í ÇÔ¼ö¸¦ Implementation ¿µ¿ª ¾Æ·¡¿¡ ¸¸µé¾î ÁÖ°í ÇÊ¿äÇÑ µ¥ÀÌÅÍ Çʵ嵵 ÀÚµ¿À¸·Î ¸¸µé¾î ÁØ´Ù.
´ÙÀ½À¸·Î ¿Ï¼ºµÈ ÄÞÆ÷³ÍÆ®ÀÇ ¼Ò½ºÀÎ ¾Æ·¡ ¸®½ºÆ®Ã³·³ ÇØ´ç Äڵ带 ÀÔ·ÂÇÏÀÚ.

¸®½ºÆ® 2.2 ¿Ï¼ºµÈ dpbFontListBox.pas
unit dpbFontListBox;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Printers;

type
  TdpbFontDevice = ( dfdAll, dfdScreen, dfdPrinter );

  TdpbFontListBox = class(TCustomListBox)
  private
    { Private declarations }
    FDevice : TdpbFontDevice;

    function GetSelectedFont: string;
    procedure SetDevie(const Value: TdpbFontDevice);
    procedure SetSelectedFont(const Value: string);
  protected
    { Protected declarations }
    procedure CreateWnd; override;
    procedure FillFontList;
  public
    { Public declarations }
    constructor Create(AOwner : TComponent); override;
    property SelectedFont : string read GetSelectedFont write SetSelectedFont;
  published
    { Published declarations }
    property Device : TdpbFontDevice read FDevice write SetDevie;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('dpb', [TdpbFontListBox]);
end;

{ TdpbFontListBox }

constructor TdpbFontListBox.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ExtendedSelect := False;
  MultiSelect := False;
  FDevice := dfdAll;
end;

procedure TdpbFontListBox.CreateWnd;
begin
  inherited CreateWnd;
  FillFontList;
end;

procedure TdpbFontListBox.FillFontList;
var
  nIndex : Integer;
begin
  Items.BeginUpdate;
  Items.Clear;
  if (FDevice = dfdScreen) or (FDevice = dfdAll) then
    Items.AddStrings(Screen.Fonts);

  if (FDevice = dfdPrinter) or (FDevice = dfdAll) then
  begin
    for nIndex := 0 to Pred(Printer.Fonts.Count) do
    begin
      if Items.IndexOf(Printer.Fonts[nIndex]) = -1 then
        Items.Add(Printer.Fonts[nIndex]);
    end;
  end;
  Sorted := True;
  Items.EndUpdate;
  if Items.Count > 0 then
    ItemIndex := 0;
end;

function TdpbFontListBox.GetSelectedFont: string;
begin
  Result := '';
  if ItemIndex <> -1 then
    Result := Items[ItemIndex];
end;

procedure TdpbFontListBox.SetDevie(const Value: TdpbFontDevice);
begin
  if FDevice <> Value then
  begin
    FDevice := Value;
    FillFontList;
  end;
end;

procedure TdpbFontListBox.SetSelectedFont(const Value: string);
begin
  ItemIndex := Items.IndexOf(Value);
end;

end.


FillFontList ÇÁ·Î½ÃÀú°¡ ½Ã½ºÅÛ¿¡¼­ »ç¿ë °¡´ÉÇÑ ±Û²Ã ¸®½ºÆ®¸¦ ±¸ÇÏ´Â ÇÁ·Î½ÃÀúÀÌ´Ù. ÀÌ ÇÁ·Î½ÃÀú¿¡¼­ ½Ã½ºÅÛ¿¡¼­ »ç¿ë °¡´ÉÇÑ ±Û²Ã ¸®½ºÆ®´Â Àü¿ª °´Ã¼ÀÎ Screen°ú Printer °´Ã¼ÀÇ Fonts ÇÁ·ÎÆÛƼ¸¦ ÀÌ¿ëÇϵµ·Ï Çß´Ù. CreateWnd ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵åÇØ¼­ óÀ½ À©µµ ÇÚµéÀÌ »ý¼ºµÇ¸é FillFontList¸¦ È£ÃâÇØ¼­ ±Û²Ã ¸®½ºÆ®¸¦ ±¸Çϰí Device ÇÁ·ÎÆÛƼÀÇ °ªÀÌ º¯°æµÉ ¶§¸¶´Ù SetDevice ÇÁ·Î½ÃÀú¿¡¼­ FillFontList¸¦ È£ÃâÇϵµ·Ï Çß´Ù.
³ª¸ÓÁö´Â 1ÀåÀ» ²Ä²ÄÇÏ°Ô ÀÐÀº µ¶ÀÚ¶ó¸é ½±°Ô ÀÌÇØÇÒ °ÍÀÌ´Ù.
2.2.3. ÄÞÆ÷³ÍÆ® µ¿ÀÛ °Ë»ç
ÄÞÆ÷³ÍÆ® ÄÚµå ÀÛ¼ºÀ» ¸¶ÃÆÀ¸¸é ÄÞÆ÷³ÍÆ®°¡ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´Â Áö °Ë»çÇØ º¼ Â÷·ÊÀÌ´Ù. ÄÞÆ÷³ÍÆ®´Â ÀÏ¹Ý ¾îÇø®ÄÉÀ̼ǰú ´Þ¸® ½ÇÇà ½Ã¿¡ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´ÂÁö¸¦ °Ë»çÇÏ´Â °ÍÀº ¹°·ÐÀÌ°í ¼³°è ½Ã¿¡µµ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´ÂÁö °Ë»çÇØ¾ßÇÑ´Ù. ½ÇÇà ½Ã °Ë»ç´Â ÁÖ·Î Public ¿µ¿ª¿¡ ¼±¾ðµÈ ÇÁ·ÎÆÛƼ³ª ¸Þ¼Òµå¸¦ °Ë»çÇÏ´Â °ÍÀÌ°í ¼³°è ½Ã °Ë»ç´Â Published ¿µ¿ª¿¡ ¼±¾ðµÈ ÇÁ·ÎÆÛƼ Áï ¿ÀºêÁ§Æ® ÀνºÆåÅÍ¿¡ ³ªÅ¸³ª´Â ÇÁ·ÎÆÛƼµéÀÌ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´Â Áö¸¦ °Ë»çÇÏ´Â °ÍÀ̶ó°í º¼ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ¾ÆÁ÷ ÄÞÆ÷³ÍÆ®¸¦ ÄÞÆ÷³ÍÆ® ÆÈ·¹Æ®¿¡ µî·ÏÇÏÁö ¾Ê¾Ò±â ¶§¹®¿¡ ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ß ÇϵíÀÌ ÄÞÆ÷³ÍÆ®¸¦ ÆÈ·¹Æ®¿¡¼­ ²ø¾î´Ù Æû À§¿¡ ³õ°í ÇÁ·ÎÆÛƼ¸¦ Á¶ÀÛÇØº¸°Å³ª À̺¥Æ® Çڵ鷯¸¦ ÀÛ¼ºÇؼ­ °Ë»çÇÒ ¼ö´Â ¾ø´Ù. ±×·¸´Ù¸é µî·ÏÇÏ¸é µÇÁö ¾Ê´À³Ä¶ó°í ¾ê±âÇÒ ¼öµµ ÀÖÁö¸¸ ÄÞÆ÷³ÍÆ®¸¦ °³¹ßÇÒ ¶§ °³¹ßÇÑ ÄÞÆ÷³ÍÆ®°¡ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´ÂÁö È®ÀÎ ÇØº¸Áö ¾Ê°í ¹«Åδë°í ÄÞÆ÷³ÍÆ®¸¦ ÆÈ·¹Æ®¿¡ µî·ÏÇÏ¸é ¿¹±âÄ¡ ¾ÊÀº ¸¹Àº ¹®Á¦¸¦ ¹ß»ý½Ãų ¼ÒÁö°¡ ÀÖ´Ù. ½ÉÁö¾î´Â µ¨ÆÄÀ̸¦ Á¤Áö½ÃÄÑ ¹ö¸®°í ½Ã½ºÅÛ±îÁö Àç½ÃÀÛÇØ¾ß ÇÒ °æ¿ìµµ »ý±ä´Ù. µû¶ó¼­ ÄÞÆ÷³ÍÆ®¸¦ µ¨ÆÄÀÌ IDE¿¡ µî·ÏÇϱ⿡ ¾Õ¼­ ÄÞÆ÷³ÍÆ®¸¦ µ¿ÀûÀ¸·Î »ý¼ºÇؼ­ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´ÂÁö °Ë»çÇØ º»´Ù.
°£´ÜÇÑ ¾îÇø®ÄÉÀ̼ÇÀ» Çϳª ¸¸µé¾î º¸ÀÚ. »õ ¾îÇø®ÄÉÀ̼ÇÀ» Çϳª ¸¸µé°í ÆûÀ» ¾Æ·¡ ±×¸²°ú °°ÀÌ ¼³°èÇÑ´Ù.

±×¸² 2-2 ±Û²Ã ¸®½ºÆ® ¹Ú½º °Ë»ç ¸ÞÀÎ Æû


±×¸®°í ¸ÞÀÎ ÆûÀÇ À¯´Ö ÆÄÀÏÀ» ¾Æ·¡ ¸®½ºÆ®¿Í °°ÀÌ ÀÛ¼ºÇÑ´Ù.

¸®½ºÆ® 2.3 FontListBoxTest.pas
unit FontListBoxTest;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, dpbFontListBox;

type
  TfrmFontListBoxTest = class(TForm)
    btnNewFontListBox: TButton;
    btnGetSelectedFont: TButton;
    btnSetGulim: TButton;
    panSelectedFont: TPanel;
    procedure btnNewFontListBoxClick(Sender: TObject);
    procedure btnGetSelectedFontClick(Sender: TObject);
    procedure btnSetGulimClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    FontListBox : TdpbFontListBox;
  end;

var
  frmFontListBoxTest: TfrmFontListBoxTest;

implementation

{$R *.DFM}

procedure TfrmFontListBoxTest.btnNewFontListBoxClick(Sender: TObject);
begin
  FontListBox := TdpbFontListBox.Create(Self);
  FontListBox.Width := 133;
  FontListBox.Height := 145;
  FontListBox.Left := 144;
  FontListBox.Top := 4;
  FontListBox.Parent := Self;
end;

procedure TfrmFontListBoxTest.btnGetSelectedFontClick(Sender: TObject);
begin
  if FontListBox <> nil then
    panSelectedFont.Caption := FontListBox.SelectedFont;
end;

procedure TfrmFontListBoxTest.btnSetGulimClick(Sender: TObject);
begin
  if FontListBox <> nil then
    FontListBox.SelectedFont := '±¼¸²';
end;

end.


À§ ¸®½ºÆ®¸¦ ÀÛ¼ºÇÏ°í ³ª¼­ ½ÇÇàÀ» ½ÃŰ°í »õ ±Û²Ã ¸®½ºÆ® ¹Ú½º ¹öư°ú ÇöÀç ¼±ÅÃµÈ ±Û²Ã ¹öư, ±¼¸² ±Û²Ã ¼±Åà ¹öưÀ» Â÷·Ê´ë·Î ´­·¯ º¸¸é ¾Æ·¡¿Í °°ÀÌ µ¿ÀÛÇÒ °ÍÀÌ´Ù.

±×¸² 2-3 ±Û²Ã ¸®½ºÆ® ¹Ú½º °Ë»ç ½ÇÇà È­¸é


ÀÌ¿Í °°ÀÌ ÄÞÆ÷³ÍÆ®¸¦ µî·ÏÇÏÁö ¾ÊÀº »óÅ¿¡¼­ ÄÞÆ÷³ÍÆ®ÀÇ °´Ã¼¸¦ µ¿ÀûÀ¸·Î »ý¼ºÇÏ´Â ¹æ¹ýÀ» ÅëÇÏ¿© ÄÞÆ÷³ÍÆ®°¡ ½ÇÇà ½Ã¿¡ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´ÂÁö °Ë»çÇÒ ¼ö ÀÖ´Ù.
ÀÌ·¸°Ô ½ÇÇà ½Ã °Ë»ç¸¦ ÇØ¼­ ÄÞÆ÷³ÍÆ®°¡ Å« ÀÌ»ó¾øÀÌ µ¿ÀÛÇÑ´Ù°í »ý°¢µÇ¸é À̸¦ ÄÞÆ÷³ÍÆ® ÆÈ·¹Æ®¿¡ µî·ÏÇϰí ÄÞÆ÷³ÍÆ®°¡ ¼³°è ½Ã¿¡µµ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´Â Áö °Ë»çÇØ º¼ Â÷·ÊÀÌ´Ù. ¸ÕÀú ÄÞÆ÷³ÍÆ®¸¦ µî·ÏÇϱâ Àü¿¡ µ¨ÆÄÀÌ 3.0ºÎÅÍ µµÀÔµÈ °³³äÀÎ ÆÐŰÁö¿¡ ´ëÇØ Àá±ñ ¾Ë¾Æ º¸°Ú´Ù.
2.2.4. ÆÐŰÁö
µ¨ÆÄÀÌ 3.0 ¹öÀüÀÌ ³ª¿À¸é¼­ »õ·Î¿î °³³äµéÀÌ ¸¹ÀÌ µîÀåÇߴµ¥ ±× Áß¿¡ ÆÐŰÁö¶ó´Â °³³äÀÌ ÀÖ´Ù.
´ëºÎºÐÀÇ »ç¶÷µéÀÌ ÀÎÅͳÝÀ̳ª PCÅë½Å¿¡¼­ ÆÄÀÏÀ» ´Ù¿î·Îµå ¹ÞÀ» ¶§ ±× ÆÄÀÏÀÇ Å©±â°¡ Ŭ °æ¿ìº¸´Ù´Â ÀÛÀº °æ¿ì¸¦ ´õ ÁÁ¾ÆÇÒ °ÍÀÌ´Ù. ¿¹¸¦ µé¾î ¾îÇø®ÄÉÀ̼ÇÀÇ ÁÖ ½ÇÇàºÎ¸¸ º¯°æµÇ°í ¾îÇø®ÄÉÀ̼ǿ¡ »ç¿ëµÈ ¶óÀ̺귯¸®³ª ÄÞÆ÷³ÍÆ®µîÀº °°´Ù°í ÇÒ °æ¿ì¿¡ µ¨ÆÄÀÌ 2.0±îÁö¸¸ ÇØµµ Àüü ÇÁ·Î±×·¥À» ¸ðµÎ ´Ù½Ã ¼³Ä¡Çؾ߸¸ Çß´Ù. ÇÏÁö¸¸ µ¨ÆÄÀÌ 3.0ºÎÅÍ´Â ÆÐŰÁö¸¦ ÀÌ¿ëÇØ¼­ ¾îÇø®ÄÉÀ̼ÇÀ» ¿©·¯ Á¶°¢À¸·Î ³ª´©¾î ¸¸µé ¼ö ÀÖµµ·Ï ÇØ ÁØ´Ù. ±×¸®°í ÆÐŰÁö·Î ³ª´©¾îÁø ¾îÇø®ÄÉÀÌ¼Ç Á¶°¢Àº ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­µµ °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¸¶Ä¡ DLL(Dynamic Linking Library)ó·³ ¿©·¯ ¾îÇø®ÄÉÀ̼ÇÀÌ ÇϳªÀÇ ÆÐŰÁö¸¦ °øÀ¯ÇÒ ¼ö Àֱ⠶§¹®¿¡ ½Ã½ºÅÛÀÇ ¸Þ¸ð¸®¿Í ÀÚ¿øÀ» Àý¾àÇÒ ¼ö ÀÖ´Ù´Â ¾ê±â°¡ µÈ´Ù.
ÆÐŰÁö°¡ ÁÖ´Â ¶Ç ´Ù¸¥ ÀÌÁ¡Àº µ¨ÆÄÀÌ IDE¿¡¼­ ÄÞÆ÷³ÍÆ®¸¦ ¼³Ä¡/»èÁ¦ÇÏ´Â µ¥ ¼Ò¿äµÇ´Â ½Ã°£À» ÁÙÀÏ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ¿Ö³ÄÇÏ¸é µ¨ÆÄÀÌ 3.0ÀÌÈÄÀÇ VCLÀº °³¹ßÀÚ°¡ ÄÞÆ÷³ÍÆ®¿¡ ¾î¶² º¯°æÀ» °¡ÇÑ´Ù°í ÇØ¼­ ¸ðµç ÄÞÆ÷³ÍÆ®¸¦ ´Ù½Ã ÄÄÆÄÀÏÇÏ´Â °ÍÀÌ ¾Æ´Ï°í ±× ÄÞÆ÷³ÍÆ®°¡ ¼Ò¼ÓµÈ ÆÐŰÁö¸¸ ÄÄÆÄÀÏÇϱ⠶§¹®ÀÌ´Ù. ÀÌ ÀÌÁ¡Àº ÄÞÆ÷³ÍÆ®»Ó ¸¸ÀÌ ¾Æ´Ï°í °³¹ßÀÚ°¡ ¸¸µç ¾îÇø®ÄÉÀ̼ǿ¡µµ Àû¿ëµÈ´Ù. ¸¸¾à ÇÁ·ÎÁ§Æ® ¿É¼Ç ´ëÈ­»óÀÚÀÇ Packages ÆäÀÌÁö¿¡ ÀÖ´Â "Build with runtime packages"°¡ ¼±ÅõǾî ÀÖ´Ù¸é ÆÐŰÁö¿¡ ´ëÇÑ ÄÄÆÄÀÏÀº ÀÌ¹Ì µÇ¾î ÀÖÀ¸¹Ç·Î ¾îÇø®ÄÉÀÌ¼Ç ÀÚü¿¡ ´ëÇÑ ÄÄÆÄÀϸ¸ ÇÏ¸é µÇ¹Ç·Î ÄÄÆÄÀÏ ¼Óµµ°¡ Çâ»óµÉ °ÍÀ̱⠶§¹®ÀÌ´Ù.
ºñ·Ï ÆÐŰÁö°¡ Ç¥ÁØ DLLÀº ¾Æ´ÏÁö¸¸(´Ù¸¥ ÄÄÆÄÀÏ·¯¿¡¼­ »ç¿ëÇÒ ¼ö ¾øÀ¸´Ï±î?) ½ÇÁ¦·Î DLLÀ̶ó°í º¼ ¼ö ÀÖ´Ù. µ¨ÆÄÀÌ´Â ÆÐŰÁö·Î ÄÄÆÄÀÏµÈ Äڵ带 ¸¶Ä¡ ½ÇÇà ÆÄÀÏ¿¡ Æ÷ÇÔµÈ ¸ðµâó·³ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÀÏÁ¾ÀÇ ¸ÅÇÎÀ» ¾Ë¾Æ¼­ ÇØÁØ´Ù. °³¹ßÀÚ´Â °ÆÁ¤ÇÒ ÇÊ¿ä ¾øÀÌ ¿¹Àü¿¡ µ¨ÆÄÀÌ·Î ÇÁ·Î±×·¥À» °³¹ßÇÒ ¶§ ó·³ ÇÏ¸é µÈ´Ù.
µ¨ÆÄÀÌ´Â ÆÐŰÁö¸¦ ÄÄÆÄÀÏÇÒ ¶§ DCP È®ÀåÀÚ¸¦ °¡Áø ÆÄÀÏ¿¡ ½Éº¼ Á¤º¸¸¦ ÀúÀåÇϸç À̰ÍÀº ½ÇÇà ÆÄÀÏÀ» ÄÄÆÄÀÏÇÒ ¶§ ÆÐŰÁö¿¡ ´ëÇÑ Á¤º¸¸¦ ¾ò±â À§ÇØ »ç¿ëµÈ´Ù. ÄÄÆÄÀÏµÈ ÆÐŰÁö´Â µ¨ÆÄÀÌ 3.0 ¶§´Â DPL(Delphi Packages Library) È®ÀåÀÚ¸¦ °¡Á³À¸³ª µ¨ÆÄÀÌ 4.0ºÎÅÍ´Â BPL(Borland Packages Library) È®ÀåÀÚ¸¦ °¡Áø´Ù.
¸ðµç °ÍÀº µ¨ÆÄÀ̰¡ ¾Ë¾Æ¼­ ó¸®ÇϹǷΠ°³¹ßÀÚ°¡ »ý°¢ÇØ¾ß ÇÒ °ÍÀº ¾î¶² ¸ðµâÀ» ¾îÇø®ÄÉÀ̼ÇÀÇ ½ÇÇàºÎ¿¡ µÎ´À³Ä ÆÐŰÁö¿¡ µÎ´À³Ä¸¸ °áÁ¤ÇÏ¸é µÈ´Ù. ¼Ò½º°¡ ÀÖ´Â ÄÞÆ÷³ÍÆ®¸¦ °¡Áö°í ÀÖ´Ù¸é »ç¿ëÀÚ ÆÐŰÁö¿¡ Ãß°¡Çϰųª »õ ÆÐŰÁö¸¦ ¸¸µé ¼ö ÀÖ´Ù. ÆÐŰÁö¸¦ ÄÄÆÄÀÏÇÏ°í ³ª¼­ ¼³Ä¡ÇÏ¸é µ¨ÆÄÀÌ IDEÀÇ ÄÞÆ÷³ÍÆ® ÆÈ·¹Æ®¿¡ ¼³Ä¡ÇÑ ÄÞÆ÷³ÍÆ®µéÀÌ ³ªÅ¸³­´Ù. ÆÐŰÁö¿¡´Â ÄÞÆ÷³ÍÆ®»Ó¸¸ ¾Æ´Ï¶ó ÀϹÝÀûÀÎ ·çƾÀ̳ª Ŭ·¡½ºµµ Æ÷Ç﵃ ¼ö ÀÖ´Ù.
ÆÐŰÁö¸¦ ¸¸µé°í ³ª¼­ °³¹ßÀÚ´Â ÆÐŰÁöÀÇ Å©±â¿¡ ¾à°£ ³î¶ö Áöµµ ¸ð¸£°ÚÁö¸¸ µ¨ÆÄÀÌ´Â ÆÐŰÁö¸¦ ¸µÅ©ÇÒ ¶§ ½º¸¶Æ® ¸µÅ·(Smart Linking)À» ÇÏÁö ¾Ê´Â´Ù. ÆÐŰÁö´Â ¿©·¯ ¾îÇø®ÄÉÀ̼ǿ¡¼­ °øµ¿À¸·Î »ç¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ ÄÄÆÄÀÏ·¯´Â ÄÞÆ÷³ÍÆ®ÀÇ ¾î¶² ·çƾ°ú Ŭ·¡½º°¡ ¾îÇø®ÄÉÀ̼ǿ¡ ÀÇÇØ¼­ »ç¿ëµÉÁö ¾Ë ¼ö°¡ ¾ø´Ù. ±×·¡¼­ µ¨ÆÄÀÌ´Â ÆÐŰÁö¸¦ ÄÄÆÄÀÏÇÒ ¶§ ÄÞÆ÷³ÍÆ®ÀÇ ¼Ò½º Äڵ忡 ÀÖ´Â ¸ðµç ±â´ÉÀ» ÆÐŰÁö¿¡ ³Ö´Â´Ù. ÀÌ ¶§¹®¿¡ ÆÐŰÁöÀÇ ÆÄÀÏ Å©±â°¡ Ä¿Áö´Â °ÍÀÌ´Ù. µ¶¸³ ¾îÇø®ÄÉÀ̼ÇÀ̶ó¸é VCLÁß ÇÊ¿äÇÑ ±â´É¸¸À» ¸µÅ©ÇϰÚÁö¸¸ ÆÐŰÁö¿¡´Â ÄÞÆ÷³ÍÆ®ÀÇ ¸ðµç ±â´ÉÀÌ µé¾î°£´Ù.
µ¨ÆÄÀÌ´Â IDE¿¡ ¼³Ä¡µÇ´Â ¼³°è ½Ã°£ ÆÐŰÁö¿Í ½ÇÇà ÆÐŰÁö µÎ°¡Áö Á¾·ùÀÇ ÆÐŰÁö¸¦ ¸¸µé ¼ö ÀÖ´Ù.
¸¸µé°í ½ÍÀº ÆÐŰÁöÀÇ Çü½ÄÀº ÆÐŰÁö ¿É¼Ç ÆäÀÌÁö¿¡¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ¼³°è ½Ã°£ ÆÐŰÁöÀÇ ÁÖ ±â´ÉÀº ¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀÚ°¡ »ç¿ëÇÒ ÄÞÆ÷³ÍÆ®¿¡ ´ëÇÑ ºÎ°¡ÀûÀÎ µµ±¸ Áï ÇÁ·ÎÆÛƼ ¿¡µðÅͳª ÄÞÆ÷³ÍÆ® ¿¡µðÅÍ µîÀ» Á¦°øÇØ ÁÙ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ÀÌµé µµ±¸´Â ¼³°è ½Ã°£¿¡¸¸ ÇÊ¿äÇÑ °ÍÀÌÁö ½ÇÇà½Ã¿¡´Â ÇÊ¿äÇÏÁö ¾Ê±â ¶§¹®¿¡ ½ÇÇà ÆÄÀÏ¿¡´Â Æ÷ÇÔ ½Ãų Çʿ䰡 ¾ø´Ù.
ÄÞÆ÷³ÍÆ®¸¦ ¼³Ä¡ÇÏ·Á¸é ÄÞÆ÷³ÍÆ®¸¦ ±âÁ¸¿¡ Á¸ÀçÇÏ´Â ÆÐŰÁö³ª »õ ÆÐŰÁö¸¦ ¸¸µé¾î¼­ ±× ÆÐŰÁö¿¡ Æ÷ÇԵǵµ·Ï ÇØ¼­ ÆÐŰÁö¸¦ ÄÄÆÄÀÏÇÏ¿©¾ß Çϸç Á¤»óÀûÀ¸·Î ÄÄÆÄÀÏµÈ ÆÐŰÁö¸¦ ¼³Ä¡Çؾ߸¸ ÄÞÆ÷³ÍÆ® ÆÈ·¹Æ®¿¡ µî·ÏµÈ´Ù. À̶§¼­¾ß ºñ·Î¼Ò ÆûÀ» ¼³°èÇÒ ¶§ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
ÆÐŰÁö¿¡ ´ëÇØ¼­´Â ÀÌ ÀåÀÇ ¸¶Áö¸·¿¡¼­ Á» ´õ ÀÚ¼¼ÇÏ°Ô ¾Ë¾Æ º¸°Ú´Ù.
2.2.5. ¼³Ä¡
ÄÞÆ÷³ÍÆ®¸¦ ¼³Ä¡Çϱâ À§Çؼ­ ÄÞÆ÷³ÍÆ® À¯´Ö ÆÄÀÏÀ» µ¨ÆÄÀÌ ÄÚµå ¿¡µðÅÍ¿¡¼­ ¿­°í Component | Install Component ¸Þ´º¸¦ ¼±ÅÃÇÏ¸é ¾Æ·¡ ±×¸²°ú °°Àº ´ëÈ­»óÀÚ°¡ ³ªÅ¸³­´Ù. ¸ÕÀú ÄÞÆ÷³ÍÆ®¸¦ ±âÁ¸ ÆÐŰÁö¿¡ ¼³Ä¡ÇÒ °ÍÀÎÁö ¾Æ´Ï¸é »õ ÆÐŰÁö¿¡ ¼³Ä¡ÇÒ °ÍÀÎÁö¸¦ °áÁ¤ÇÑ´Ù. TdpbFontListBox´Â »õ ÆÐŰÁö¿¡ ¼³Ä¡ÇØ º¸ÀÚ.

±×¸² 2-4 ÄÞÆ÷³ÍÆ® ¼³Ä¡ ´ëÈ­»óÀÚ


Into new package ÆäÀÌÁö¸¦ ¼±ÅÃÇÏ°í ¼³Ä¡ÇÒ ÄÞÆ÷³ÍÆ® À¯´Ö ÆÄÀÏÀ» Unit file name ¶õ¿¡ ÀÔ·ÂÇÏ°í »õ·Î ¸¸µé ÆÐŰÁöÀÇ À̸§À» ÀÔ·ÂÇÑ´Ù. ÆÐŰÁö ÆÄÀÏÀº ÀÏÁ¾ÀÇ ÇÁ·ÎÁ§Æ® ÆÄÀϷμ­ DPK È®ÀåÀÚ¸¦ °¡Áø´Ù. ±×¸®°í OK ¹öưÀ» ´©¸£¸é ¾Æ·¡ ±×¸²Ã³·³ ÆÐŰÁö ÇÁ·ÎÁ§Æ® â°ú ÆÐŰÁö¸¦ ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÑ´Ù´Â ´ëÈ­ »óÀÚ°¡ ³ªÅ¸³­´Ù.

±×¸² 2-5 ÆÐŰÁö ¼³Ä¡


±×¸² 2.5¿¡¼­ Yes ¹öưÀ» ´©¸£¸é ÆÐŰÁö¸¦ ÄÄÆÄÀÏÇϰí Á¤»óÀûÀ¸·Î ÄÄÆÄÀÏÀÌ ¿Ï·áµÇ°í ¼³Ä¡ ÀÛ¾÷µµ ¸¶ÃÆ´Ù¸é ¾Æ·¡ ±×¸² 2.7°ú °°Àº ´ëÈ­ »óÀÚ°¡ ³ªÅ¸³­´Ù.

±×¸² 2-6 ÆÐŰÁö ÇÁ·ÎÁ§Æ® â




±×¸² 2-7 ÆÐŰÁö ¼³Ä¡ ¿Ï·á


ÀÌ ´ëÈ­ »óÀÚ´Â ÆÐŰÁö°¡ Á¤»óÀûÀ¸·Î ÄÄÆÄÀÏ µÇ¾úÀ¸¸ç ÆÐŰÁö¿¡ Æ÷ÇÔµÈ ÄÞÆ÷³ÍÆ®µéÀ» µ¨ÆÄÀÌ IDE¿¡ µî·ÏÇß´Ù´Â °ÍÀ» ¾Ë·Á ÁØ´Ù.
TdpbFontListBox´Â ÄÞÆ÷³ÍÆ® ÆÈ·¹Æ® DPB ÆäÀÌÁö¿¡ µî·ÏÇßÀ¸¹Ç·Î Á¤»óÀûÀ¸·Î µî·ÏµÇ¾ú´Ù¸é ÄÞÆ÷³ÍÆ® ÆÈ·¹Æ®¿¡ ¾Æ·¡ ±×¸²Ã³·³ º¸ÀÏ °ÍÀÌ´Ù.

±×¸² 2-8 µî·ÏµÈ TdpbFontListBox


ÆÈ·¹Æ®¿¡ µî·ÏµÈ TdpbFontListBox´Â À§ÀÇ ±×¸²Ã³·³ ÄÞÆ÷³ÍÆ®¸¦ ³ªÅ¸³»´Â À̹ÌÁö°¡ ´Ù¸¥ ÆäÀÌÁö¿¡ ÀÖ´Â ´Ù¸¥ ÄÞÆ÷³ÍÆ®ÀÇ À̹ÌÁö¿Í ´Ù¸£´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. µ¨ÆÄÀÌ´Â ÄÞÆ÷³ÍÆ®ÀÇ À¯´Ö ÆÄÀÏÀÌ ÆÐŰÁö ÇÁ·ÎÁ§Æ®¿¡ óÀ½ Ãß°¡µÉ ¶§ À¯´Ö ÆÄÀϰú À̸§Àº °°°í È®ÀåÀÚ¸¸ DCR(Dynamic Component Resource)ÀÎ ÆÄÀÏÀ» ã¾Æ¼­ ÆÐŰÁö ÆÄÀÏ¿¡ °°ÀÌ Ãß°¡ÇØ ÁØ´Ù. DCR ÆÄÀÏÀº À©µµ ¸®¼Ò½º ÆÄÀÏÀ̸ç ÁÖ·Î ÄÞÆ÷³ÍÆ®°¡ ÆÈ·¹Æ®¿¡ µî·ÏµÉ ¶§ »ç¿ëÇÒ À̹ÌÁö¸¦ ´ã°í ÀÖ°Ô µÈ´Ù. µû¶ó¼­ À§ÀÇ °æ¿ì ¿ì¸®°¡ dpbFontListBox ÆÄÀÏ¿¡ ´ëÇÑ DCR ÆÄÀÏÀ» ¸¸µé¾î ÁÖÁö ¾Ê¾ÒÀ¸´Ï±î µ¨ÆÄÀÌ´Â ±âº» À̹ÌÁö¸¦ »ç¿ëÇϰí ÀÖ´Â °ÍÀÌ´Ù. ÄÞÆ÷³ÍÆ® ¸®¼Ò½º ÆÄÀÏÀ» ¸¸µé±â À§Çؼ­´Â µ¨ÆÄÀÌ¿Í ÇÔ²² Á¦°øµÇ´Â Image Editor¸¦ ÀÌ¿ëÇÑ´Ù. ÄÞÆ÷³ÍÆ® À̹ÌÁö´Â 24X24 Å©±â¸¦ °¡Áö´Â ºñÆ®¸Ê À̹ÌÁö·Î ¸¸µé¸ç ¸®¼Ò½ºÀÇ À̸§Àº ÄÞÆ÷³ÍÆ®ÀÇ Å¬·¡½º À̸§°ú °°µµ·Ï ÁöÁ¤ÇØ¾ß ÇÑ´Ù.

±×¸² 2-9 Image Editor


À§ ±×¸²Ã³·³ DCR ÆÄÀÏÀ» ¸¸µé°í ÆÐŰÁö¸¦ ´Ù½Ã ÄÄÆÄÀÏÇØµµ ÆÈ·¹Æ®¿¡´Â ÁöÁ¤ÇØÁØ ÄÞÆ÷³ÍÆ® À̹ÌÁö°¡ ³ªÅ¸³ªÁö ¾Ê´Â´Ù. ¿Ö³ÄÇÏ¸é µ¨ÆÄÀÌ´Â ÆÐŰÁö ÆÄÀÏ¿¡ ÄÞÆ÷³ÍÆ® À¯´Ö ÆÄÀÏÀÌ Ã³À½ Ãß°¡µÉ ¶§¸¸ µü Çѹø DCR ÆÄÀÏÀ» ã±â ¶§¹®ÀÌ´Ù. ÄÞÆ÷³ÍÆ® À̹ÌÁö°¡ Á¤»óÀûÀ¸·Î ³ª¿Àµµ·Ï DPB.DPK ÆÐŰÁö¿¡¼­ dpbFontListBox.pas¸¦ »èÁ¦ÇÑ µÚ ´Ù½Ã Ãß°¡Çؼ­ ÄÄÆÄÀÏ ÇØ º¸ÀÚ. Á¤»óÀûÀ¸·Î ÄÞÆ÷³ÍÆ® ÆÈ·¹Æ®¿¡ ÄÞÆ÷³ÍÆ® À̹ÌÁö°¡ ³ªÅ¸³¯ °ÍÀÌ´Ù. ÄÞÆ÷³ÍÆ® À¯´Ö ÆÄÀÏÀ» »èÁ¦ÇÏ°í ´Ù½Ã Ãß°¡ÇÏ´Â ¹æ¹ý ´ë½Å¿¡ ÆÐŰÁö ÇÁ·ÎÁ§Æ® ÆÄÀÏÀÎ DPK ÆÄÀÏÀ» Á÷Á¢ ÆíÁýÇØ¼­ {$R *.RES} Çà ¾Æ·¡¿¡ {$R 'dpbFontListBox.dcr'} ¸¦ Ãß°¡ÇØ ÁÖ°í ´Ù½Ã ÄÄÆÄÀÏÇØµµ µÈ´Ù.

±×¸² 2-10 Á¤»óÀûÀ¸·Î µî·ÏµÈ ÄÞÆ÷³ÍÆ® À̹ÌÁö


ÀÌ·¸°Ô ÄÞÆ÷³ÍÆ®°¡ ÆÈ·¹Æ®¿¡ µî·ÏµÇ°í ³ª¸é ´Ù¸¥ ÄÞÆ÷³ÍÆ®¸¦ »ç¿ëÇÏ´Â °Íó·³ ÆÈ·¹Æ®¿¡¼­ ÄÞÆ÷³ÍÆ®¸¦ ÆûÀ¸·Î ²ø¾î´Ù ³õ°í ÄÞÆ÷³ÍÆ®ÀÇ ÇÁ·ÎÆÛƼµéÀ» Á¶ÀÛÇϸ鼭 Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´ÂÁö¸¦ °Ë»çÇÒ ¼ö ÀÖ´Ù.
TdpbFontListBoxÀÇ °æ¿ì ¿ÀºêÁ§Æ® ÀνºÆåÅÍ¿¡¼­ Device ÇÁ·ÎÆÛƼÀÇ °ªÀ» º¯°æÇßÀ» ¶§ ±Û²Ã ¸®½ºÆ®°¡ Á¤»óÀûÀ¸·Î º¯°æµÇ´ÂÁö¸¦ º¸¸é µÈ´Ù. ±×·±µ¥ ÀÏ¹Ý ¸®½ºÆ® ¹Ú½º ÄÞÆ÷³ÍÆ®¸¦ Æû¿¡ ³î·Á ³õ°í ¿ÀºêÁ§Æ® ÀνºÆåÅ͸¦ º¸¸é ¸¹Àº ÇÁ·ÎÆÛƼ¿Í À̺¥Æ®°¡ Àִµ¥ TdpbFontListBox´Â ¸î °³ ¾ø´Ù. ¿Ö ±×·²±î? TdpbFontListBoxÀÇ ºÎ¸ð Ŭ·¡½ºÀÎ TCustomListBox¿Í TCustomListBoxÀÇ ºÎ¸ðÀÎ TWinControlÀº ¸¹Àº ÇÁ·ÎÆÛƼ¿Í À̺¥Æ®¸¦ protected ¸â¹ö·Î ¼±¾ðÇØ ³õ¾Ò´Ù. ÀÌÀü Àå¿¡¼­µµ ¾ê±âÇßÁö¸¸ À̵é ÇÁ·ÎÆÛƼ¿Í À̺¥Æ®¸¦ TdpbFontListBox°¡ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­´Â Published ¿µ¿ª¿¡ ´Ù½Ã ¼±¾ðÇØ ÁÖ¾î¾ß ÇÑ´Ù. ±×·¡¼­ TdpbFontListBoxÀÇ Published ¿µ¿ª¿¡ ¾Æ·¡¿Í °°ÀÌ ºÎ¸ð Ŭ·¡½ºÀÇ ÇÁ·ÎÆÛƼ¿Í À̺¥Æ®¸¦ ¼±¾ðÇØ ÁÖ°í ´Ù½Ã ÄÄÆÄÀÏÇÏ¸é µÈ´Ù.

property Align;
property Anchors;
property BiDiMode;
property BorderStyle;
property Color;
property Columns;
property Constraints;
property Ctl3D;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Font;
property ImeMode;
property ImeName;
property IntegralHeight;
property ItemHeight;
property Items;
property ParentBiDiMode;
property ParentColor;
property ParentCtl3D;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property Sorted;
property Style;
property TabOrder;
property TabStop;
property TabWidth;
property Visible;
property OnClick;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnDrawItem;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMeasureItem;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;


TdpbFontListBox´Â ´ÙÁß ¼±ÅÃÀ» Áö¿øÇÏÁö ¾Êµµ·Ï Çϱâ À§Çؼ­ ExtendedSelect, MultiSelect ÇÁ·ÎÆÛƼ´Â ´Ù½Ã ¼±¾ðÇÏÁö ¾Ê¾Ò´Ù. µû¶ó¼­ ÀÌ µÎ ÇÁ·ÎÆÛƼ´Â ¿ÀºêÁ§Æ® ÀνºÆåÅÍ¿¡ ³ªÅ¸³ªÁö ¾Ê´Â´Ù.

ÀÌ·¸°Ô ÇØ¼­ ÄÞÆ÷³ÍÆ®¸¦ °³¹ßÇÏ´Â ÀϹÝÀûÀÎ °úÁ¤¿¡ ´ëÇØ ¾Ë¾Æ º¸¾Ò´Ù. ¼³¸íÀÌ ±æ¾î º¹ÀâÇØ º¸ÀÏ ¼ö µµ ÀÖÁö¸¸ ÀÚÁÖ ÇØ º¸¸é ¾ÆÁÖ °£´ÜÇÑ ÀÛ¾÷ÀÌ´Ù. ´ÙÀ½ Àý¿¡¼­´Â ½ÇÁ¦·Î ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÒ ¶§ »ç¿ëÇÒ ¼ö ÀÖ´Â ¼öÁØÀÇ ÄÞÆ÷³ÍÆ®¸¦ °£´ÜÇϰԳª¸¶ °³¹ßÇØ º¸µµ·Ï ÇϰڴÙ.


ÀúÀ۱ǿ¡ ´ëÇÑ °øÁö
ÀÌ ¹®¼­¿¡ Æ÷ÇÔµÈ ¸ðµç ±Û°ú ¼Ò½º ÄÚµå´Â ÀÛÀÚÀÎ Àú ±è¼ºµ¿ÀÇ ÁöÀû Àç»êÀÌÁö¸¸ ¹«´ÜÀ¸·Î ¹èÆ÷Çϰųª Ã¥À̳ª °­ÀÇ ±³ÀçµîÀ» À§ÇÑ º¹Á¦ µî ÀúÀÛ±ÇÀ» ÀúÇØÇÏ´Â ÇàÀ§¸¦ Á¦¿ÜÇϰí´Â ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¶ÇÇÑ ÀÌ ÆäÀÌÁö¿¡ ´ëÇÑ ¸µÅ©´Â ÀÚÀ¯·Ó°Ô ÇÒ ¼ö ÀÖÀ¸³ª Àü¹®À» ÀüÁ¦ÇÏ´Â ÀÏÀº Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù.