<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss version="2.0">
	<channel>
		<title>프로그래밍 노트</title>
		<link>http://wwwi.tistory.com/</link>
		<description>프로그래밍 공부하면서 써가는 개인 노트
(따라서 여기에 씌여있는 소스의 신빙성을 보장 못함 -.-;;)
이 블로그 보면서 틀린 점이 있으면 꼬옥 알려주세요.</description>
		<language>ko</language>
		<pubDate>Wed, 17 Aug 2011 07:11:03 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<managingEditor>띠리</managingEditor>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/wwwi" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="wwwi" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
			<title>델파이 : System Tray에 Icon 넣기</title>
			<link>http://wwwi.tistory.com/295</link>
			<description>&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(121, 165, 228); border-right-color: rgb(121, 165, 228); border-bottom-color: rgb(121, 165, 228); border-left-color: rgb(121, 165, 228); background-color: rgb(219, 232, 251); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;/p&gt;
&lt;div&gt;unit Unit1;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
interface&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
uses&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;Dialogs, &lt;b&gt;ShellApi&lt;/b&gt;, Menus;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
const&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;WM_NOTIFYICON = WM_USER + 333;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
type&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;TForm1 = class(TForm)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;PopMenu: TPopupMenu;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Show1: TMenuItem;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;EXit1: TMenuItem;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;procedure EXit1Click(Sender: TObject);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;procedure Show1Click(Sender: TObject);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;procedure FormClose(Sender: TObject; var Action: TCloseAction);&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;procedure FormCreate(Sender: TObject);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;private&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{ Private declarations }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;NotifyIcnData : TNotifyIconData;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;hMainIcon : HICON;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;procedure ClickTrayIcon(var msg: TMessage); message WM_NOTIFYICON;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;public&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{ Public declarations }&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;end;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
var&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;Form1: TForm1;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;implementation&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
{$R *.dfm}&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
&lt;b&gt;&lt;font class="Apple-style-span" color="#5FB636"&gt;// System Tray에 Icon의 Event 수신&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;procedure TForm1.ClickTrayIcon(var msg: TMessage);&lt;/div&gt;
&lt;div&gt;var&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pt: TPoint;&lt;/div&gt;
&lt;div&gt;begin&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;case msg.lparam of&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;WM_LBUTTONDBLCLK : Show;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;WM_RBUTTONDOWN :&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;begin&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GetCursorPos(pt);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PopMenu.Popup(pt.x, pt.y);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;end;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;end;&lt;/div&gt;
&lt;div&gt;end;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
procedure TForm1.EXit1Click(Sender: TObject);&lt;/div&gt;
&lt;div&gt;begin&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;Application.Terminate;&lt;/div&gt;
&lt;div&gt;end;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
// Form Close 했을 때&lt;/div&gt;
&lt;div&gt;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);&lt;/div&gt;
&lt;div&gt;begin&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;Action := caNone;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;Hide; // Form 숨기기&lt;/div&gt;
&lt;div&gt;end;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
procedure TForm1.FormCreate(Sender: TObject);&lt;/div&gt;
&lt;div&gt;begin&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;font class="Apple-style-span" color="#5FB636"&gt;&amp;nbsp;&amp;nbsp;// System Tray에 Icon 표시&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&amp;nbsp;&amp;nbsp;hMainIcon := LoadIcon(MainInstance, 'MAINICON');&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&amp;nbsp;&amp;nbsp;Shell_NotifyIcon(NIM_DELETE, @NotifyIcnData);&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&amp;nbsp;&amp;nbsp;with NotifyIcnData do&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&amp;nbsp;&amp;nbsp;begin&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cbSize &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:= sizeof(TNotifyIconData);&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wnd &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; := handle;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uID &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; := 11111;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uFlags &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:= NIF_MESSAGE or NIF_ICON or NIF_TIP;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uCallbackMessage &amp;nbsp;:= WM_NOTIFYICON;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;hIcon &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; := HMainIcon;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;szTip &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; := 'System Tray Test';&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&amp;nbsp;&amp;nbsp;end;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font class="Apple-style-span" color="#AF65DD"&gt;&amp;nbsp;&amp;nbsp;Shell_NotifyIcon(NIM_ADD, @NotifyIcnData);&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;end;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
procedure TForm1.Show1Click(Sender: TObject);&lt;/div&gt;
&lt;div&gt;begin&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;Show;&lt;/div&gt;
&lt;div&gt;end;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
end.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</description>
			<category>델파이</category>
			<category>Delphi</category>
			<category>iCon</category>
			<category>system tray</category>
			<category>델파이</category>
			<category>시스템 트레이</category>
			<author>띠리</author>
			<guid>http://wwwi.tistory.com/295</guid>
			<comments>http://wwwi.tistory.com/295#entry295comment</comments>
			<pubDate>Fri, 29 Apr 2011 18:44:00 +0900</pubDate>
		</item>
		<item>
			<title>[Delphi] SubFolder 안의 File 검색하기</title>
			<link>http://wwwi.tistory.com/294</link>
			<description>&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(121, 165, 228); border-right-color: rgb(121, 165, 228); border-bottom-color: rgb(121, 165, 228); border-left-color: rgb(121, 165, 228); background-color: rgb(219, 232, 251); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;
&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;/p&gt;
&lt;div&gt;
// GetFileList : Sub Folder안의 File까지 검색하는 함수&lt;/div&gt;
&lt;div&gt;
// &amp;nbsp; &amp;nbsp; &amp;nbsp;slFileList : 반환하는 File List&lt;/div&gt;
&lt;div&gt;
// &amp;nbsp; &amp;nbsp; &amp;nbsp;sPath : 검색한 Root Folder&lt;/div&gt;
&lt;div&gt;
// &amp;nbsp; &amp;nbsp; &amp;nbsp;sMask : File 검색 Mask 설정&lt;/div&gt;
&lt;div&gt;
// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;예) '*.txt', '*.exe'&lt;/div&gt;
&lt;div&gt;
// &amp;nbsp; &amp;nbsp; &amp;nbsp;bSubDir : SubFolder 검색 유무&lt;/div&gt;
&lt;div&gt;
procedure &lt;b&gt;GetFileList&lt;/b&gt;(slFileList: TStringList;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sPath, sMask: string; bSubDir: boolean);&lt;/div&gt;
&lt;div&gt;
var&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;i, iFindRst : integer;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;SrchRec : TSearchRec;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;slFolder : TStringList;&lt;/div&gt;
&lt;div&gt;
begin&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;if sPath[length(sPath)] &amp;lt;&amp;gt; '\' then&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;sPath := sPath + '\';&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;// 지정 Foldr 안의 지정 Mask의 Full File path 수집&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;iFindRst := FindFirst(sPath + sMask, faAnyFile - faDirectory, SrchRec);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;while iFindRst = 0 do&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;begin&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;slFileList.Add(sPath + SrchRec.Name);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;iFindRst := FindNext(SrchRec);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;end;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;FindClose(SrchRec);&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;// Sub Folder List 수집&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;slFolder := TStringList.Create;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;iFindRst := FindFirst(sPath + '*.*', faAnyFile, SrchRec);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;while iFindRst = 0 do begin&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if ((SrchRec.Attr and faDirectory) &amp;lt;&amp;gt; 0) and (SrchRec.Name[1] &amp;lt;&amp;gt; '.') then&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;slFolder.Add(sPath + SrchRec.Name);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;iFindRst := FindNext(SrchRec);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;end;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;FindClose(SrchRec);&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;// Sub Folder안 File 검색&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;for i := 0 to slFolder.Count - 1 do&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;GetFileList(slFileList, slFolder[i], sMask, bSubDir);&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;slFolder.Free;&lt;/div&gt;
&lt;div&gt;
end;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(159, 211, 49); border-right-color: rgb(159, 211, 49); border-bottom-color: rgb(159, 211, 49); border-left-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;
&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;/p&gt;
&lt;div&gt;
procedure TForm1.Button1Click(Sender: TObject);&lt;/div&gt;
&lt;div&gt;
var&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;slFiles : TStringList;&lt;/div&gt;
&lt;div&gt;
begin&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;slFiles := TStringList.Create;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&lt;b&gt;GetFileList&lt;/b&gt;(slFiles, 'c:\data\', '*.txt', true); //&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;memo1.Clear;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;memo1.Lines := slFiles;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;slFiles.Free;&lt;/div&gt;
&lt;div&gt;
end;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;</description>
			<category>Delphi</category>
			<category>File 검색</category>
			<category>FindFirst</category>
			<category>FindNext</category>
			<category>Recursion</category>
			<category>Recursive Call</category>
			<category>Sub Directory</category>
			<category>Sub Folder</category>
			<category>델파이</category>
			<category>재귀 호출</category>
			<category>파일 검색</category>
			<author>띠리</author>
			<guid>http://wwwi.tistory.com/294</guid>
			<comments>http://wwwi.tistory.com/294#entry294comment</comments>
			<pubDate>Tue, 12 Apr 2011 19:32:00 +0900</pubDate>
		</item>
		<item>
			<title>Firebird에서 auto_increment 같은 자동 연번 field 사용하기</title>
			<link>http://wwwi.tistory.com/293</link>
			<description>&lt;P&gt;&lt;br /&gt;&lt;br /&gt;Firebird의 Firebird ISQL Tool을 실행해서 아래 녹색 상자의 Source를 전체를 붙여 넣어보면 어떻게 동작하는지 대충 알 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;/P&gt;
&lt;DIV style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #d0ff9d"&gt;
&lt;P&gt;create database 'TestAutoNoDb.fdb' user 'sysdba' password 'masterkey';&lt;/P&gt;
&lt;P&gt;set autoddl off;&lt;/P&gt;
&lt;P&gt;create table AutoNoTable (&lt;br /&gt;&amp;nbsp; AutoId &amp;nbsp; integer not null,&lt;br /&gt;&amp;nbsp; Fld_Int&amp;nbsp; integer,&lt;br /&gt;&amp;nbsp; Fld_Char char(200),&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; constraint pk_AutoNoTable primary key (AutoId)&lt;br /&gt;);&lt;/P&gt;
&lt;P&gt;create generator gen_AutoId;&lt;/P&gt;
&lt;P&gt;set term ^;&lt;/P&gt;
&lt;P&gt;create trigger trg_AutoNoTable_SeqNo for AutoNoTable&lt;br /&gt;active before insert position 1&lt;br /&gt;AS&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; if (new.AutoId is null) then&lt;br /&gt;&amp;nbsp; &amp;nbsp; new.AutoId = gen_id(gen_AutoId, 1);&lt;br /&gt;end&lt;br /&gt;^&lt;br /&gt;commit work^&lt;/P&gt;
&lt;P&gt;set term ; ^&lt;/P&gt;
&lt;P&gt;insert into AutoNoTable (Fld_Int, Fld_Char) values (1, 'one');&lt;br /&gt;insert into AutoNoTable (Fld_Int, Fld_Char) values (2, 'two');&lt;br /&gt;insert into AutoNoTable (Fld_Int, Fld_Char) values (3, 'three');&lt;/P&gt;
&lt;P&gt;commit work;&lt;/P&gt;
&lt;P&gt;select * from AutoNoTable;&lt;br /&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;br /&gt;&lt;br /&gt;설명 &lt;br /&gt;&lt;br /&gt;&lt;/P&gt;
&lt;DIV style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #c9edff"&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;&lt;STRONG&gt;// Database 만들기&lt;/STRONG&gt;&lt;/FONT&gt;&lt;br /&gt;create database 'TestAutoNoDb.fdb' user 'sysdba' password 'masterkey';&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;// 자동 Commit mode off(?)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;set autoddl off;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;// 자동 연번 Test용 Table 만들기&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;create table AutoNoTable (&lt;br /&gt;&amp;nbsp; AutoId &amp;nbsp; integer &lt;STRONG&gt;not null&lt;/STRONG&gt;,&lt;br /&gt;&amp;nbsp; Fld_Int&amp;nbsp; integer,&lt;br /&gt;&amp;nbsp; Fld_Char char(200),&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; constraint pk_AutoNoTable primary key (AutoId)&lt;br /&gt;);&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;// 자동 연번용 generator 만들기&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;create generator gen_AutoId;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;// 자동 연번 Trigger 만들기&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;set term ^;&lt;/P&gt;
&lt;P&gt;create trigger trg_AutoNoTable_SeqNo for AutoNoTable&lt;br /&gt;active before insert position 1&lt;br /&gt;AS&lt;br /&gt;begin&lt;br /&gt;&amp;nbsp; if (new.AutoId is null) then&lt;br /&gt;&amp;nbsp; &amp;nbsp; new.AutoId = gen_id(gen_AutoId, 1);&lt;br /&gt;end&lt;br /&gt;^&lt;br /&gt;commit work^&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;// 데이터 추가&lt;br /&gt;&lt;/FONT&gt;&lt;/STRONG&gt;set term ; ^&lt;/P&gt;
&lt;P&gt;insert into AutoNoTable (Fld_Int, Fld_Char) values (1, 'one');&lt;br /&gt;insert into AutoNoTable (Fld_Int, Fld_Char) values (2, 'two');&lt;br /&gt;insert into AutoNoTable (Fld_Int, Fld_Char) values (3, 'three');&lt;/P&gt;
&lt;P&gt;commit work;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;// 데이터 가져오기&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;select * from AutoNoTable;&lt;br /&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;br /&gt;실행 결과&lt;br /&gt;&lt;br /&gt;&lt;/P&gt;
&lt;DIV style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #faffa9"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; AUTOID &amp;nbsp; &amp;nbsp;&amp;nbsp; FLD_INT FLD_CHAR&lt;br /&gt;============ ============ ===========&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #ffffff"&gt; &lt;FONT color=#008000&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 one&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;&lt;STRONG&gt;2&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2 two&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;&lt;STRONG&gt;3&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3 three&lt;/DIV&gt;
&lt;P&gt;AUTOID와 추가 하지 않아도 자동으로 연번이 생성됨&lt;br /&gt;&lt;br /&gt;주의) 이 트리거에 문제점이 하나 있다.&lt;br /&gt;연번이 가장 큰 숫자에서 시작하지 않는다. -.-;;&lt;br /&gt;그래서 이 트리거를 사용하지 않고 인위적으로 AUTOID field에 높은 번호를 입력하면&lt;br /&gt;자동으로 AutoID가 입력될 때 같은 번호가 나오면 Error가 발생되게 된다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-----------------------------------------&lt;br /&gt;&lt;br /&gt;참고&lt;br /&gt;&lt;br /&gt;위 Source를 Firebird ISQL Tool에 붙이려면 Firebird ISQL Tool의 Caption bar에서 오른쪽 click하면 popup menu가 표시되고 편집 &amp;gt; 붙여넣기(P)를 선택하면 된다.&lt;br /&gt;&lt;/P&gt;</description>
			<category>Firebird</category>
			<category>auto_increment</category>
			<category>Firebird</category>
			<category>Trigger</category>
			<category>자동연번</category>
			<category>트리거</category>
			<category>파이어버드</category>
			<author>떡잎</author>
			<guid>http://wwwi.tistory.com/293</guid>
			<comments>http://wwwi.tistory.com/293#entry293comment</comments>
			<pubDate>Wed, 09 Feb 2011 16:32:48 +0900</pubDate>
		</item>
		<item>
			<title>[델파이]DBGrid에서 깜박거림 없애기</title>
			<link>http://wwwi.tistory.com/292</link>
			<description>DBGrid의 자료를 다시 표시할 때 코딩을 잘못하면 DBGrid가 깜박거리는 현상이 발생한다.&lt;br /&gt;&lt;br /&gt;TDBGrid에 연결된 DataSource의 연결된 DataSet에 SQL이 바뀔 때 아래와 같이 하면&lt;br /&gt;문제가 해결되었다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;DIV style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; BACKGROUND-COLOR: #c9edff"&gt;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#9b18c1&gt;ZQuery1.DisableControls;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;&amp;nbsp; ZQuery1.close;&lt;br /&gt;&amp;nbsp; ZQuery1.SQL.Text := edit1.Text;&lt;br /&gt;&amp;nbsp; ZQuery1.Open;&lt;br /&gt;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#9b18c1&gt;ZQuery1.EnableControls;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;br /&gt;&lt;br /&gt;개발환경&lt;br /&gt;&amp;nbsp;&amp;nbsp; Delphi2006&lt;br /&gt;&amp;nbsp;&amp;nbsp; ZeosLib 6.6.6</description>
			<category>델파이</category>
			<category>dataset</category>
			<category>datasource</category>
			<category>Delphi</category>
			<category>TDBGrid</category>
			<category>델파이</category>
			<author>떡잎</author>
			<guid>http://wwwi.tistory.com/292</guid>
			<comments>http://wwwi.tistory.com/292#entry292comment</comments>
			<pubDate>Wed, 09 Feb 2011 11:06:24 +0900</pubDate>
		</item>
		<item>
			<title>[SQL] 특정 조건에 해당하는 앞에서 원하는 만큼만 record를 가져오는 TOP 구문</title>
			<link>http://wwwi.tistory.com/291</link>
			<description>DB를 잘 안써서 모르고 있었는데&lt;br /&gt;이렇게 좋은 기능이 있었다.&lt;br /&gt;&lt;br /&gt;어떤 조건에 해당하는 record중 앞쪽에서 지정한 수만큼 record를 가져올 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;TABLE style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=0 x:str&gt;
&lt;COLGROUP&gt;
&lt;COL style="WIDTH: 140pt; mso-width-source: userset; mso-width-alt: 5290" width=186&gt;
&lt;COL style="WIDTH: 304pt; mso-width-source: userset; mso-width-alt: 11520" width=405&gt;
&lt;TBODY&gt;
&lt;TR style="HEIGHT: 13.5pt" height=18&gt;
&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 140pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 13.5pt; BACKGROUND-COLOR: transparent" width=186 height=18&gt;&lt;FONT size=2&gt;&amp;nbsp; Microsoft SQL Server&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 304pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=405&gt;&lt;FONT size=2&gt;&amp;nbsp; SELECT TOP 10 column FROM table&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 13.5pt" height=18&gt;
&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 13.5pt; BACKGROUND-COLOR: transparent" height=18&gt;&lt;FONT size=2&gt;&amp;nbsp; PostgreSQL and MySQL&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent"&gt;&lt;FONT size=2&gt;&amp;nbsp; SELECT column FROM table LIMIT 10&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 13.5pt" height=18&gt;
&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 13.5pt; BACKGROUND-COLOR: transparent" height=18&gt;&lt;FONT size=2&gt;&amp;nbsp; Oracle&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent"&gt;&lt;FONT size=2&gt;&amp;nbsp; SELECT column FROM table WHERE ROWNUM &amp;lt;= 10&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 13.5pt" height=18&gt;
&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 13.5pt; BACKGROUND-COLOR: transparent" height=18&gt;&lt;FONT size=2&gt;&amp;nbsp; Sybase&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent"&gt;&lt;FONT size=2&gt;&amp;nbsp; SET rowcount 10 SELECT column FROM table&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 13.5pt" height=18&gt;
&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 13.5pt; BACKGROUND-COLOR: transparent" height=18&gt;&lt;FONT size=2&gt;&amp;nbsp; Firebird&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent"&gt;&lt;FONT size=2&gt;&amp;nbsp; SELECT FIRST 10 column FROM table&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DB마다 좀 문법은 틀리기는 해도 이런 기능들이 다 있기는 하네&lt;br /&gt;이런 기능이 예전부터 있었던건가?&lt;br /&gt;&lt;br /&gt;하기야 나같은 경우는 access를 주로 써서 access는 이런 기느이 없네&lt;br /&gt;</description>
			<category>SQL</category>
			<category>Firebird</category>
			<category>First</category>
			<category>limit</category>
			<category>MySQL</category>
			<category>oracle</category>
			<category>PostgreSQL</category>
			<category>SQL</category>
			<category>SQL Server</category>
			<category>sybase</category>
			<category>TOP</category>
			<author>떡잎</author>
			<guid>http://wwwi.tistory.com/291</guid>
			<comments>http://wwwi.tistory.com/291#entry291comment</comments>
			<pubDate>Tue, 08 Feb 2011 20:01:34 +0900</pubDate>
		</item>
	</channel>
</rss>

