컴포넌트 제작의 깊은 곳
|
|
- 정헌 옥
- 6 years ago
- Views:
Transcription
1 컴포넌트제작의깊은곳 (Advanced Components Writing Techniques) 그리드컴포넌트의제작 비교적복잡하면서도유용하게사용할수있는컴포넌트가그리드컴포넌트들이다. 델파이는그리드를작성하기쉽도록 TCustomGrid 라는기초컴포넌트를제공하고있다. 그러면, 이컴포넌트를바탕으로해서달력컴포넌트를하나만들어보도록하자. TCustomGrid 컴포넌트를상속하도록하고, 컴포넌트의이름을 TSampleCalendar 라고하자. 이컴포넌트역시 Samples 페이지에등록하도록한다. 상속된프로퍼티 publish 와초기값변경 TCustomGrid 는추상적인그리드컴포넌트이기때문에, 많은수의 protected 프로퍼티를제공한다. 그러므로, 다음과같이필요한프로퍼티를 published 섹션에선언해주도록한다. published property Align; property BorderStyle; property Color; property Ctl3D; property Font; property GridLineWidth; property ParentColor; property ParentFont; property OnClick; property OnDblClick; property OnDragDrop; property OnDragOver; property OnEndDrag; property OnKeyDown; property OnKeyPress; property OnKeyUp;
2 달력은기본적으로행과열의수가고정되어있기때문에, ColCount 나 RowCount 같은프 로퍼티를 publish 할필요가없다. 그렇지만, 이런초기값을 constructor 에서설정할필요 가있다. constructor TSampleCalendar.Create(AOwner: TComponent); inherited Create(AOwner); ColCount := 7; RowCount := 7; // 머릿글포함 FixedCols := 0; FixedRows := 1; // 요일표시하는행 ScrollBars := ssnone; Options := Options - [gorangeselect] + [godrawfocusselected]; // 범위선택을할수없다. 셀크기조절과내부채우기 사용자나어플리케이션이컨트롤의크기를변경하면, 윈도우는 WM_SIZE 메시지를받게된다. 컴포넌트는이메시지에맞추어이미지를다시그릴필요가있다. 이를위해서 WM_SIZE 메시지에반응하는메시지처리메소드를추가할필요가있다. 먼저 protected 섹션에다음과같이메시지처리메소드를선언한다. procedure WMSize(var Message: TWMSize); message WM_SIZE; 그리고, 다음과같이구현한다. procedure TSampleCalendar.WMSize(var Message: TWMSize); var GridLines: Integer; GridLines := 6 * GridLineWidth; DefaultColWidth := (Message.Width - GridLines) div 7; DefaultRowHeight := (Message.Height - GridLines) div 7; // 전체줄의크기 // 새로운셀의폭 // 새로운셀의높이
3 그리드컨트롤은셀단위로내부를채우게된다. 그러므로, 달력컴포넌트라면각각의셀마다날짜를계산해서그려야한다. 그리드셀은 DrawCell 가상메소드를호출하여그리게되므로, 이메소드를오버라이드해야한다. 먼저첫번째행의요일을해당되는열에그리도록한다. protected 섹션에 DrawCell 메소드를선언하고, 이를다음과같이구현한다. procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override; procedure TSampleCalendar.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); if ARow = 0 then Canvas.TextOut(ARect.Left, ARect.Top, ShortDayNames[ACol + 1]); 날짜계산 달력컨트롤을만들때중요한것은사용자나어플리케이션이연, 월, 일을설정할수있는기전을제공해야한다는것이다. 델파이는날짜와시간은 TDateTime 데이터형의변수에저장한다. 그러므로, 날짜자체는 TDateTime 데이터형변수에저장하되 Day, Month, Year 프로퍼티를제공하여쉽게날짜를조정할수있도록해야한다. 1. 날짜의저장 날짜를저장하기위해서는먼저 TDateTime 데이터형의필드변수를하나선언하고, 이를 constructor 에서현재의날짜를얻어서저장한다. private FDate: TDateTime; constructor TSampleCalendar.Create(AOwner: TComponent); inherited Create(AOwner); FDate := Date;
4 그리고, 런타임에서접근할수있는프로퍼티를하나선언한다. TSampleCalendar = class(tcustomgrid) private procedure SetCalendarDate(Value: TDateTime); public property CalendarDate: TDateTime read FDate write SetCalendarDate; procedure TSampleCalendar.SetCalendarDate(Value: TDateTime); FDate := Value; Refresh; // 화면을업데이트 2. Day, Month, Year 프로퍼티선언 먼저다음과같이프로퍼티를선언한다. 특이하게보일지도모르겠지만하나의날짜에의해서이들프로퍼티는동시에변경되고, 설정되므로이들을각각의 Get, Set 메소드로구현할필요가없다. 이렇게중복되는부분을같은접근메소드 (access method) 를이용해서사용할때에는 index 를사용하면유용하다. public property Day: Integer index 3 read GetDateElement write SetDateElement; property Month: Integer index 2 read GetDateElement write SetDateElement; property Year: Integer index 1 read GetDateElement write SetDateElement; 그러면 GetDateElement, SetDateElement 메소드를다음과같이선언하고구현하면된다. type TSampleCalendar = class(tcustomgrid) private function GetDateElement(Index: Integer): Integer
5 procedure SetDateElement(Index: Integer; Value: Integer); function TSampleCalendar.GetDateElement(Index: Integer): Integer; var AYear, AMonth, ADay: Word; DecodeDate(FDate, AYear, AMonth, ADay); case Index of 1: Result := AYear; 2: Result := AMonth; 3: Result := ADay; else Result := -1; procedure TSampleCalendar.SetDateElement(Index: Integer; Value: Integer); var AYear, AMonth, ADay: Word; if Value > 0 then DecodeDate(FDate, AYear, AMonth, ADay); case Index of 1: AYear := Value; 2: AMonth := Value; 3: ADay := Value; else Exit; FDate := EncodeDate(AYear, AMonth, ADay); Refresh; 그렇게어려운코드는아니다. EncodeDate 와 DecodeDate 를이용하면 TDateTime 데이 터형과 Year, Month, Day 의정수형사이를자유롭게변환할수있다는것을알아두면된
6 다. 3. 날짜표시하기 날짜를달력에그릴때에는달마다일수가다르고, 주어진연도가윤년인지여부를고려해야한다. IsLeapYear 함수를이용하면해당연도가윤년인지알아볼수있으며, SysUtils.pas 유닛의 MonthDays 배열을이용하면해당달의날짜수를알아낼수있다. 일단윤년정보와그달의날짜수를알게되면, 그리드에서각날짜의위치를계산할수있게된다. 먼저그달에서첫번째날짜가적당한요일에위치하는지를계산할때사용할오프셋을저장할필드와필드값을업데이트할메소드를선언하고이를다음과같이구현한다. type TSampleCalendar = class(tcustomgrid) private FMonthOffset: Integer; protected procedure UpdateCalendar; virtual; procedure TSampleCalendar.UpdateCalendar; var AYear, AMonth, ADay: Word; FirstDate: TDateTime; // 그달의첫번째날짜 if FDate <> 0 then DecodeDate(FDate, AYear, AMonth, ADay); FirstDate := EncodeDate(AYear, AMonth, 1); FMonthOffset := 2 - DayOfWeek(FirstDate); // 오프셋을초기화한다. Refresh; // 달력을다시그린다.
7 그리고, constructor 와 SetCalendarDate, SetDateElement 메소드에 UpdateCalendar 메소 드를호출하도록수정한다. constructor TSampleCalendar.Create(AOwner: TComponent); inherited Create(AOwner); UpdateCalendar; procedure TSampleCalendar.SetCalendarDate(Value: TDateTime); FDate := Value; UpdateCalendar; procedure TSampleCalendar.SetDateElement(Index: Integer; Value: Integer); FDate := EncodeDate(AYear, AMonth, ADay); UpdateCalendar; 이제는셀의행과열의번호를넘겨주면, 이위치가그달의몇번째날인지계산하는메 소드를다음과같이구현한다. function TSampleCalendar.DayNum(ACol, ARow: Integer): Integer; Result := FMonthOffset + ACol + (ARow - 1) * 7; if (Result < 1) or (Result > MonthDays[IsLeapYear(Year), Month]) then Result := -1; // 셀의위치의날짜가유효하지않다. 이들메소드를이용하면, 날짜의위치를알수있다. 같이구현하여날짜를표시하도록한다. 그러면, DrawCell 메소드를다음과
8 procedure TSampleCalendar.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); var TheText: string; TempDay: Integer; if ARow = 0 then // 헤더이면 TheText := ShortDayNames[ACol + 1] // 요일을표시한다. else TheText := ''; // 일단셀을비운다. TempDay := DayNum(ACol, ARow); // 셀의위치에따른날짜를구한다. if TempDay <> -1 then TheText := IntToStr(TempDay); // 결과가유효할때만사용! with ARect, Canvas do TextRect(ARect, Left + (Right - Left - TextWidth(TheText)) div 2, Top + (Bottom - Top - TextHeight(TheText)) div 2, TheText); // 셀의중앙에날짜표시 4. 현재날짜의선택 이제선택된날짜를표시하도록해보자. 이를위해서는 UpdateCalendar 메소드를 Refresh 메소드를호출하기전에 Row, Column 프로퍼티를설정하도록수정해야한다. procedure TSampleCalendar.UpdateCalendar; if FDate <> 0 then Row := (ADay - FMonthOffset) div 7 + 1; Col := (ADay - FMonthOffset) mod 7; Refresh; 날짜변경
9 날짜사이를이동할때에는화살표키를이용하여이동할수도있고, 마우스를클릭할수도있다. 이들을모두처리해주어야하는것이중요하다. 선택된날짜를변경해주어야할것이다. 기본적으로그리드는화살표키를누르거나, 마우스를클릭할때선택된셀을옮기는것을처리하게되어있다. 그렇지만, 달력의경우약간의수정이필요하다. 이를위해, 그리드의 Click 메소드를오버라이드해야한다. procedure TSampleCalendar.Click; var TempDay: Integer; inherited Click; TempDay := DayNum(Col, Row); if TempDay <> -1 then Day := TempDay; 날짜가변경되었을때이벤트를발생시킬수있다면좋을것이다. 그러면, OnChange 이벤 트를추가하도록하자. 먼저다음과같이프로시저형을선언하고이벤트를추가하자. type TSampleCalendar = class(tcustomgrid) private FOnChange: TNotifyEvent; protected procedure Change; dynamic; published property OnChange: TNotifyEvent read FOnChange write FOnChange; 그리고, Change 메소드를다음과같이구현한다. procedure TSampleCalendar.Change; if Assigned(FOnChange) then FOnChange(Self);
10 그리고, SetCalendarDate 와 SetDateElement 메소드에 Change 메소드를호출하는부분을 추가한다. procedure TSampleCalendar.SetCalendarDate(Value: TDateTime); FDate := Value; UpdateCalendar; Change; procedure TSampleCalendar.SetDateElement(Index: Integer; Value: Integer); FDate := EncodeDate(AYear, AMonth, ADay); UpdateCalendar; Change; 이렇게만든달력컴포넌트는비어있는셀이존재하게되는데, 날짜가찍혀있지않은셀을선택할경우선택이되지않도록해야할것이다. 이를위해서는 SelectCell 메소드를오버라이드하여구현해야한다. function TSampleCalendar.SelectCell(ACol, ARow: Longint): Boolean; if DayNum(ACol, ARow) = -1 then Result := False else Result := inherited SelectCell(ACol, ARow); 이것으로간단한달력컴포넌트를그리드를이용해서작성해보았다. 비록볼품도없고, 단순한컴포넌트이지만, 그리드를이용하여여러가지컴포넌트를개발하는데에는참고가 될만할것이다.
11 데이터인식컨트롤의제작 델파이는데이터소스와연결해서데이터를보여주고, 편집할수있는여러가지컨트롤들을제공한다. 이런데이터인식컨트롤을제작하기위해서는몇가지고려해야할공통적인것들이있다. 단순한단일필드와연결된데이터인식컨트롤을만들수도있고, 여러레코드를관리하는컨트롤을만들수도있다. 컨트롤과데이터베이스를연결하는것은데이터링크클래스를통해서다루어진다. 데이터링크클래스중에서단일필드와연결할때에는보통 TFieldDataLink 클래스를사용한다. 물론전체테이블과연결할수있는데이터링크클래스도있다. 여기에서는필자가작성한 TDBTree 컴포넌트를바탕으로설명하겠지만, 지면관계상 570 라인가까이에이르는전체소스를설명할수는없고데이터인식컨트롤을구현하는방법을중심으로설명하도록한다. 그밖에도소스를분석하면객체를저장하고, 이를활용하는등의여러가지테크닉을배울수있을것이다. TFieldDataLink 클래스 TFieldDataLink 클래스는컨트롤과데이터소스사이의연결을구성한다. 그러므로, 데이터인식컨트롤을만들때에는이클래스에대한이해가필수적이라고할수있다. 주요메소드와프로퍼티를소개하면다음과같다. 메소드 / 프로퍼티 Edit 내용 편집가능한레코드를편집모드로만든다. 데이터소스가읽기전용이면 False 를반환한다. Modified 컨트롤이데이터를변경할때호출해야한다. 데이터링크는레코드가바뀌지 않았던데이터소스를제공하며, 변경된데이터를요구할때 OnUpdateData 이 벤트핸들러를호출한다. Reset 데이터소스의데이터를변경하지않거나, 새로운데이터를검색할때호출한다. CanModify 읽기전용으로필드의값을수정할수있는지여부를결정한다. Control 읽기전용으로연결된데이터컨트롤을가리킨다. 데이터링크가입력포커스를 받는컨트롤을결정하기위해 Control 속성을사용한다. Editing 읽기전용으로데이터소스의 State 속성이 dsedit, dsinsert, dssetkey 중하나 인지나타낸다. Field 읽기전용으로연결된필드클래스를, 연결된것이없으면 nil 을반환한다. FieldName 데이터베이스필드이름을지정한다. OnActiveChange 데이터소스의 Active 프로퍼티가변경될때호출되는이벤트이다. OnDataChange 데이터레코드가변한후에호출되는이벤트이다. 모든데이터인식컨트롤은
12 여기에대한핸들러를구현해야한다. 이핸들러가없으면컨트롤이필드로부터 데이터를검색할때알수있는방법이없다. OnEditingChange 데이터소스가편집모드로들어가거나나올때호출되는이벤트이다. OnUpdateData 컨트롤로부터변경된데이터를소스가요구할때호출되는이벤트이다. 여기에 대한핸들러는연결된필드구성요소의데이터를저장한다. UpdateRecord 데이터소스가데이터컨트롤에의해수정된데이터를가진현재레코드의복사 본을수정하려할때호출된다. 데이터컨트롤에서포커스를잃을때호출된다. BufferCount 사용가능한레코드버퍼의개수를반환한다. 그리드와같은다중레코드컨트롤 을구현할때에이를이용하여사용자가한번에많은수의값을편집할때성능을향상시킬수있다. 디폴트값은 1 이다. DataSet 읽기전용으로데이터소스로연결된데이터세트를되돌려준다. DataSource 연결된데이터소스를지정한다. RecordCout 현재데이터링크에의해버퍼되어진레코드수를반환한다. 데이터인식컨트롤은자체적인데이터링크클래스를가지고있으며, 컨트롤이데이터링 크객체를생성하고파괴하는책임을가지고있다. type TDBTree = class(tcustomtreeview) private FDataTitleLink: TFieldDataLink; 모든데이터인식컨트롤은데이터를컨트롤에제공하는데이터소스를지정하는 DataSource 프로퍼티를가지고있다. 또한, 연결할데이터소스의필드를지정하는 DataField 프로퍼티를가지고있다. 물론, 보통의컨트롤은하나의필드와데이터컨트롤을연결하게되므로이렇게 DataField 프로퍼티로연결하면되지만, 컨트롤에따라서는여러개의필드를설정해야하는경우도있을것이다. 보통의경우에는 DataField 프로퍼티를하나만가지면되지만, 트리구조를데이터베이스에저장하기위해서는자신의 ID 와 Parent, Index 를저장할 3 개의필드와타이틀의내용을저장할필드가필요하다. 물론대표적인필드는 Title 을저장할필드를하나만지정하도록 published 프로퍼티로지정하고이를 DataField 프로퍼티로사용하고, 나머지는런타임에서접근할수있도록 public 섹션에선언해서사용하도록한다. 이들프로퍼티를접근하고, 설정할접근메소드를설정하고구현할때에는데이터링크클래스를이용한다.
13 TDBTree = class(tcustomtreeview) private FIDFieldName: string; FParentFieldName: string; FIndexFieldName: string; function GetDataTitleField: string; function GetDataSource: TDataSource; function GetTitleField: TField; function GetIDField: TField; function GetParentField: TField; function GetIndexField: TField; function GetDataSet: TDataSet; procedure SetDataTitleField(const Value: string); procedure SetDataSource(Value: TDataSource); public property TreeDataSet: TDataSet read GetDataSet; property IDField: TField read GetIDField; property ParentField: TField read GetParentField; property IndexField: TField read GetIndexField; property TitleField: TField read GetTitleField; published property DataSource: TDataSource read GetDataSource write SetDataSource; property DataField: string read GetDataTitleField write SetDataTitleField; function TDBTree.GetDataSource: TDataSource; Result := FDataTitleLink.DataSource; procedure TDBTree.SetDataSource(Value: TDataSource); FDataTitleLink.DataSource := Value;
14 if Value <> nil then Value.FreeNotification(Self); function TDBTree.GetDataSet: TDataSet; Result := FDataTitleLink.DataSet; function TDBTree.GetDataTitleField: string; Result := FDataTitleLink.FieldName; procedure TDBTree.SetDataTitleField(const Value: string); FDataTitleLink.FieldName := Value; procedure TDBTree.SetIDField(FieldName: string); if TreeDataSet.FindField(FieldName) <> nil then FIDFieldName := FieldName; procedure TDBTree.SetParentField(FieldName: string); if TreeDataSet.FindField(FieldName) <> nil then FParentFieldName := FieldName; procedure TDBTree.SetIndexField(FieldName: string); if TreeDataSet.FindField(FieldName) <> nil then FIndexFieldName := FieldName;
15 function TDBTree.GetTitleField: TField; Result := FDataTitleLink.Field; function TDBTree.GetIDField: TField; if TreeDataSet.FindField(FIDFieldName) <> nil then Result := TreeDataSet.FieldByName(FIDFieldName) else MessageDlg(' 해당되는 ID 필드가없습니다!', mterror, [mbok], 0); function TDBTree.GetParentField: TField; if TreeDataSet.FindField(FParentFieldName) <> nil then Result := TreeDataSet.FieldByName(FParentFieldName) else MessageDlg(' 해당되는 Parent 필드가없습니다!', mterror, [mbok], 0); function TDBTree.GetIndexField: TField; if TreeDataSet.FindField(FIndexFieldName) <> nil then Result := TreeDataSet.FieldByName(FIndexFieldName) else MessageDlg(' 해당되는 Index 필드가없습니다!', mterror, [mbok], 0); 그리고, constructor 와 destructor 에서데이터링크객체를생성하고, 파괴하는것이중요 하다. public constructor Create(AOwner: TComponent); override; destructor Destroy; override; constructor TDBTree.Create(AOwner: TComponent);
16 inherited Create(AOwner); inherited ReadOnly := True; ControlStyle := ControlStyle + [csreplicatable]; FDataTitleLink := TFieldDataLink.Create; FDataTitleLink.Control := Self; FIDFieldName := 'ID'; FParentFieldName := 'Parent'; FIndexFieldName := 'Index'; FMemorySaving := True; destructor TDBTree.Destroy; var i: integer; i := 0; FDataTitleLink.Free; inherited Destroy; 데이터링크를이용하여필드와데이터소스를설정하는것까지했으면, 절반은끝난셈이다. 이제는데이터의변화를컨트롤에반영하도록구현하는것이중요하다. 보통의경우이때에는데이터링크클래스의 OnDataChange 이벤트를이용한다. 데이터소스에서데이터의변화를감지하면, 데이터링크객체는 OnDataChange 이벤트핸들러를호출하게된다. 그러므로, DataChange 메소드를구현하고, 이메소드를 OnDataChange 이벤트에연결하는것이중요하다. 그러나, DBTree 에서는이를이용하지않고따로 public 메소드들을제공하여구현하였다. 표준적인방법이아니기때문에따로설명하지는않는다. 대신일반적인데이터인식컨트롤을구현할때에는앞에서설명한방법을사용하는데, 여기에서는 TDBEdit 컨트롤이어떻게구현되었는지소개한다. TDBEdit = class(tcustommaskedit) private procedure DataChange(Sender: TObject); procedure TDBEdit.DataChange(Sender: TObject);
17 if FDataLink.Field <> nil then if FAlignment <> FDataLink.Field.Alignment then EditText := ''; {forces update} FAlignment := FDataLink.Field.Alignment; EditMask := FDataLink.Field.EditMask; if not (csdesigning in ComponentState) then if (FDataLink.Field.DataType = ftstring) and (MaxLength = 0) then MaxLength := FDataLink.Field.Size; if FFocused and FDataLink.CanModify then Text := FDataLink.Field.Text else EditText := FDataLink.Field.DisplayText; if FDataLink.Editing and FDataLink.FModified then Modified := True; end else FAlignment := taleftjustify; EditMask := ''; if csdesigning in ComponentState then EditText := Name else EditText := ''; 데이터인식컨트롤의내용을편집했을때에는필드데이터링크객체를업데이트해야데이터세트에변화를반영할수있다. 데이터가변했을때에는 OnDataChange 이벤트에서처리하듯이, 데이터컨트롤이변경되었을때에는 OnUpdateData 이벤트에서처리해야한다. 그러므로, UpdateData 메소드를구현하고 OnUpdateData 이벤트에 UpdateData 메소
18 드를연결한다. TDBEdit 컨트롤은다음과같이구현되어있다. TDBEdit = class(tcustommaskedit) private procedure UpdateData(Sender: TObject); procedure TFieldDataLink.UpdateData; if FModified then if (Field <> nil) and Assigned(FOnUpdateData) then FOnUpdateData(Self); FModified := False; DataChange, UpdateData 메소드에서중요한것은이렇게구현된메소드를 constructor 에 서이벤트핸들러를대입하는코드를추가해야한다는것이다. constructor TDBEdit.Create(AOwner: TComponent); inherited Create(AOwner); inherited ReadOnly := True; ControlStyle := ControlStyle + [csreplicatable]; FDataLink := TFieldDataLink.Create; FDataLink.Control := Self; FDataLink.OnDataChange := DataChange; FDataLink.OnEditingChange := EditingChange; FDataLink.OnUpdateData := UpdateData; 데이터인식컨트롤의 Change 메소드는새로운값이설정될때마다호출된다. Change 메소드는 OnChage 이벤트핸들러가존재하면이를호출한다. 그러므로, 컴포넌트사용자는 OnChage 이벤트핸들러를이용하여데이터변화에대한여러가지처리를하는코드를입력할수있다. 설정값이변경되면연결된데이터세트는반드시변화에대해반응하도록해야하는데, 이를위해서는 Change 메소드를오버라이드하여야한다. DBTree 의경우다
19 음과같이구현한다. TDBTree = class(tcustomtreeview) protected procedure Change(Node: TTreeNode); override; procedure TDBTree.Change(Node: TTreeNode); inherited Change(Node); GotoID(Node); procedure TDBTree.GotoID(ANode: TTreeNode); if ANode <> nil then TreeDataSet.Locate(FIDFieldName, PID(ANode.Data)^, []); 여기서 Change 메소드는사용자가트리노드를선택하여변경한경우이므로해당트리노드에해당되는레코드로옮겨가야한다. 이를처리하는메소드가 GotoID 이며, GotoID 메소드는 DataSet 의 Locate 메소드를이용하여구현한다. 이것으로데이터인식컨트롤의가장핵심적인부분에대한구현방법에대해서소개하였다. 예제로보여준 DBTree 의경우일반적인데이터인식컨트롤과는달리여러개의레코드를보여주고, 이들사이를옮겨다니는처리를해야하기때문에다소복잡하다. 그래서, 사실가장전형적인예제로서는부적절한면이있지만, 어떤식으로구현하는지에대해서는감을잡았을것으로믿는다. 델파이소스중에서 DBCtrls.pas 유닛에보면좋은예제가많으므로이들을참고로할것을권하고싶다. 이번장에서같이제공하는 DBTree 컴포넌트는인터넷에서구할수있는여러가지 DBTreeView 컴포넌트와조금은다른방식으로간단하게구현한컴포넌트이다. 물론인터넷에서구한컴포넌트보다미약한부분도많지만, 사용하기에는더쉽고간단하다. 컴포넌트를제작할때아쉬운점은필자가 DBTree 컴포넌트를처음만들때에는인터넷에서없었기때문에 96 년가을에사용을위해서제작한것인데, 몇달지나지않아서비슷한컴포넌트들이공개되었다. 이처럼기다리면비슷한것들이나오는것을보면누구나생각하고필요로하는내용은비슷한가보다 (^^;). DBTree 컴포넌트의소스와함께제공되는
20 Readme.txt 파일을읽어보면 DBTree 컴포넌트의사용법에대해서적어놓았으므로활용 해서좋은어플리케이션을만들어보기바란다. 컴포넌트제작에유용한프로퍼티 / 메소드 지금까지언급한여러가지컴포넌트제작에대한내용이외에도조금은고급스러운컴포넌트로만들기위해서는몇가지알아야할프로퍼티와메소드가있다. 여기서이들에대해모두다룰수는없지만그래도자주쓰이는것들을중심으로소개하고자한다. 컴포넌트 State 의검사 TComponent 컴포넌트의 ComponentState 프로퍼티는컴포넌트의현재상태를파악하는데사용할수있다. 보통컴포넌트를쉐어웨어로배포할때, 디자인타임과런타임을구별해서제한을두는컴포넌트등을제작할때사용된다. ComponentState 프로퍼티값에는다음과같은것들이있다. 값 csancestor 설명 컴포넌트가조상폼에나타난경우설정된다. csdesigning 이같이설정 csdesigning 컴포넌트가디자인모드에있을경우설정된다. csdestroying 컴포넌트가파괴되려할때설정된다. csfixups 컴포넌트가다른폼의컴포넌트와연결되어있으나, 연결된컴포넌트가아직로드되 지않은경우설정된다. csloading Filer 객체에서컴포넌트를로딩하는중이면설정된다. csreading 스트림에서프로퍼티를읽어들이는도중이면설정된다. csupdating 컴포넌트의변경사항을업데이트하는도중일때. 사용된다. csancestor 가설정된경우에만 cswriting 프로퍼티값을스트림에기록하는도중이면설정된다. 예를들어, 디자인타임에서등록하라는메시지를다음과같이보여줄수있다. if (csdesigning in ComponentState) then ShowMessage( 등록하세요! ); 컨트롤의 State 프로퍼티 TControl 클래스에는런타임에서의컨트롤의상태를반영하는 ControlState 라는프로퍼티 가정의되어있다. 이프로퍼티는세트로정의되어있으며, 다음과같은값을가질수있
21 다. 값 cslbuttondown 의미 왼쪽마우스버튼을누르고아직놓지않은상태 csclicked 클릭이벤트가발생할때설정된다. cspalette WM_PALETTECHANGED 메시지를받았다. csreadingstate 컨트롤이 state 정보를스트림에서읽고있다. csalignmentneeded 컨트롤이재정렬될필요가있을때 csfocusing 어플리케이션이컨트롤에포커스를주려고한다. cscreating 컨트롤이생성되고있다. cspaintcopy 컨트롤이복제되어그려지고있다. 컨트롤의 Style 설정 ControlStyle 프로퍼티는컨트롤의특징을결정하는세트프로퍼티이다. 이프로퍼티는주 로컴포넌트의 constructor 에서설정하게된다. 다음과같은값들과의미를가질수있다. 값의미 csacceptscontrols 디자인타임에서컨트롤을드롭하면 parent 가될수있다. cscapturemouse 마우스를클릭했을때이벤트를캡쳐할수있다. csdesigninteractive 디자인타임에서오른쪽마우스버튼을클릭하면왼쪽버튼을클릭하는것으 로매핑하여컨트롤을다룬다. csclickevents 마우스의클릭을받아들인다. csframed 컨트롤이 3D 프레임을가진다. cssetcaption Name 프로퍼티가변경될때, 자동으로캡션이변경된다. csopaque 컨트롤이클라이언트영역을완전히채운다. csdoubleclicks 더블클릭메시지를처리한다. csfixedwidth 컨트롤의폭이변경되지않는다. csfixedheight 컨트롤의높이가변경되지않는다. csnodesignvisible 디자인타임에컨트롤이보이지않는다. csreplicatable 컨트롤을 DBCtrlGrid 에드롭할수있다. csnostdevents 마우스, 키보드, 클릭과같은표준이벤트를무시한다. Loaded 메소드
22 Loaded 메소드는컨트롤이생성될때프로퍼티를 DFM 파일에서읽어온뒤, 컴포넌트가보여지기전에프로퍼티값에대한생성프로세스를처리할기회를얻을수있다. 보통, 여기에서저장된프로퍼티값에대해 private, public 데이터필드의값을초기화하거나제작된컴포넌트에대한여러가지설정을할기회가된다. Notification 메소드 Notification 메소드는 TComponent 클래스에서제공되는가상메소드로, 델파이 IDE 가컴포넌트가폼에드롭되거나제거될때호출하는메소드이다. Notification 메소드는다음과같이선언되어있다. procedure Notification(AComponent: TComponent; Operation: TOperation); virtual; Notification 메소드의첫번째파라미터는폼에추가되거나삭제되는컴포넌트를나타내며, 두번째파라미터는 opinsert, opremove 라는값을가질수있다. 이메소드는다른컴포넌트가폼에추가되거나삭제될때특정작업을해야할때사용된다. 예를들어, TBatchMove 의 Notification 메소드는다음과같이구현되어있다. procedure TBatchMove.Notification(AComponent: TComponent; Operation: TOperation); inherited Notification(AComponent, Operation); if Operation = opremove then if Destination = AComponent then Destination := nil; if Source = AComponent then Source := nil; 먼저상속된 Notification 메소드를호출하고, 작업이 opremove 인경우에제거되려는컴포넌트의종류가 Source, Destination 프로퍼티에지정된컴포넌트이면이들프로퍼티의값을 nil 로설정한다. 이렇게, 다른컴포넌트와의관련이있도록만들어진경우에는컴포넌트의추가와삭제에따른처리를해주어야한다. DBTree 컴포넌트에도 Notification 메소드를다음과같이구현하고있다. procedure TDBTree.Notification(AComponent: TComponent;
23 Operation: TOperation); inherited Notification(AComponent, Operation); if (Operation = opremove) and (FDataTitleLink <> nil) and (AComponent = DataSource) then DataSource := nil; FreeNotification 메소드 FreeNotification 메소드는 Notification 메소드와관련되어사용되는 TComponent 의메소드이다. Notification 메소드가폼에서컴포넌트가추가되고삭제될때호출되지만, Owner 가다른컴포넌트의추가, 삭제에는반응하지못한다. 즉, 데이터인식컨트롤의경우데이터모듈에데이터소스가있고폼에컨트롤이있는경우와같이 Owner 가다른경우에는데이터소스가추가, 삭제될때 Notificaiton 메소드를호출하지못한다. 이런경우에는연결될컴포넌트를 FreeNotification 메소드를이용해서컴포넌트가삭제될때 Notification 메소드를호출하도록지정할수있다. 사소한듯하지만데이터인식컨트롤등과같이연결된컴포넌트가있어야하는컴포넌트를제작할때에는놓치기쉬운부분이다. TDBTree 컨트롤의데이터소스컨트롤을지정하는 SetDataSource 메소드의구현부분을살펴보자. procedure TDBTree.SetDataSource(Value: TDataSource); FDataTitleLink.DataSource := Value; if Value <> nil then Value.FreeNotification(Self); 이렇게데이터소스를연결할때파라미터로 Notification 을받을컴포넌트를지정하면된다. 여기서 Value 는데이터소스를가리키며, 데이터소스의 FreeNotification 메소드에 Self( 여기서는 TDBTree) 를파라미터로하여호출함으로써데이터소스가추가, 삭제될때 TDBTree 의 Notification 메소드를호출하게된다. CreateWnd, DestroyWnd 메소드 CreateWnd 메소드는윈도우컨트롤이처음생성되거나, 윈도우가프로퍼티의변경에따라 파괴되었다가재생성되어야할필요가있을때호출된다. 그러므로, CreateWnd 메소드는 윈도우가처음생성될때추가적인초기화메시지를넘겨주기위해오버라이드하여구현한
24 다. CreateWnd 메소드는처음에 CreateParams 메소드를호출하여윈도우생성파라미터를초기화하고, CreateWindowHandle 을호출하여컨트롤에대한윈도우핸들을생성한다. 그리고, 새로운크기의윈도우를적용하게되며 WM_SETFONT 메시지를이용해 Perform 메소드를호출하여컨트롤의폰트를설정한다. DestroyWnd 메소드는 TWinControl 에서추가한메소드로, 컴포넌트가파괴될때컨트롤의윈도우핸들과연관된디바이스컨텍스트를해제하기위한메소드이다. 이메소드는컴포넌트의 Destroy 메소드이전에호출된다. 만약 Destroy 메소드에서윈도우핸들을이용한작업을하려고하면, Window has no parent 에러메시지를보게된다. 이는윈도우핸들이없어졌기때문이다. 그러므로, 컴포넌트가파괴될때윈도우핸들을가지고디바이스컨텍스트를이용한여러가지작업을하고자할때에는 DestroyWnd 메소드를오버라이드하여구현해주어야한다. 여기서꼭생각해야할것은상속된 DestroyWnd 메소드를호출하면핸들이없어지므로, 상속된 DestoryWnd 메소드는가장나중에호출하는것이좋다. VCL 소스코드중에서비교적간단한 TCustomEdit 의예를들어설명하겠다. procedure TCustomEdit.CreateWnd; FCreating := True; try inherited CreateWnd; finally FCreating := False; DoSetMaxLength(FMaxLength); Modified := FModified; if FPasswordChar <> #0 then SendMessage(Handle, EM_SETPASSWORDCHAR, Ord(FPasswordChar), 0); UpdateHeight; 먼저상속된 CreateWnd 메소드를호출하여초기작업을한다. 그리고, FMaxLength 필드의값을이용하여길이를결정하고 Modified 프로퍼티를설정한다. 또한, FPasswordChar 의값이존재하면패스워드문자를보여주기위해메시지를넘겨주고컨트롤의높이를맞추게된다. 이와같이 CreateWnd 메소드에서는윈도우가생성될때고려해야할여러가지를설정한다. procedure TCustomEdit.DestroyWnd;
25 FModified := Modified; inherited DestroyWnd; function TCustomEdit.GetModified: Boolean; Result := FModified; if HandleAllocated then Result := SendMessage(Handle, EM_GETMODIFY, 0, 0) <> 0; 여기서는 FModified 필드의값을 Modified 프로퍼티의값과일치시킨다. 자동적으로접근 메소드인 GetModified 가호출되는데, 여기에서 Handle 을이용하여변경된내용을반영하 게된다. 정리 (Summary) 이것으로컴포넌트제작에대한여러가지방법들에대한설명을마치고자한다. 이번장에서제작한달력과 DBTree 컴포넌트는 Chap23.dpk 패키지파일에저장하였으니직접설치하고익혀보기바란다. 컴포넌트제작은델파이로프로그래밍을할때가장필수적인부분이고중요한부분이라고할수있다. 나름대로여러가지부분을다루었으나, 컨테이너컴포넌트를제작하는방법이나프로퍼티에디터를제작하는방법등의고급컴포넌트제작에대한내용을지면관계상모두다루지못한아쉬움이남는다. 아마도컴포넌트를제대로제작하는내용을모두담으려고하면적어도그것만가지고 1000 페이지는넘는책을써야할것이다. 델파이의소스를열심히분석해보면얻는것이많을것이라는정도로밖에여기서는말할수없는것이무척아쉽다. 제 4 부에서다룬내용은델파이에서사용하게되는델파이컴포넌트에대한개발방법에대해서알아보았다. 다음장에서부터다루게되는제 5 부의내용은델파이에한정되지않고, 다른개발도구에서도사용할수있는표준적인개발방법론인 DLL/DCOM/CORBA 에대해서알아보도록할것이다.
PowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More information歯제작.PDF
E07 1, 2 VCL Visual Component Library, [1] TComponent VCL VCL, (Object) TStrings TCanvas VCL [ 1] 2 TObject TObject [ 1] 21 TObject TObject [ 1] TObject, TObject,,,,, (run-time type information) TObject
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More information학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2
학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등
More information제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호
제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법
More informationvar answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");
자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트
More informationAPI - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어
메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -
More informationPowerPoint Presentation
Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More information歯처리.PDF
E06 (Exception) 1 (Report) : { $I- } { I/O } Assign(InFile, InputName); Reset(InFile); { $I+ } { I/O } if IOResult 0 then { }; (Exception) 2 2 (Settling State) Post OnValidate BeforePost Post Settling
More information기본적인 컴포넌트의 제작
기본적인컴포넌트의제작 (Creating Basic Components) 델파이는가장잘된윈도우용 OOP 개발환경이라고말할수있다. 이러한델파이의가장핵심부분은누가뭐라해도델파이의튼튼한컴포넌트라고말할수있다. 컴포넌트란 OOP 의기본개념을충실하게지원하는델파이의객체로, 이러한컴포넌트를개발하는방법이야말로, 델파이개발자에게는가장중요한기술이라고말해도과언이아니다. 이번장에서는컴포넌트가동작하는방법을이해하고실제로컴포넌트를제작하는방법에대해서알아보기로한다.
More information<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.
More informationJavascript
1. 이벤트와이벤트핸들러의이해 이벤트 (Event) 는웹브라우저에서발생하는다양한사건을말합니다. 예를들면, 버튼을마우스로을했다거나브라우저를닫았다거나 Enter 키를눌렀다거나등등아주다양한사건들이있습니다. 그렇다면이벤트핸들러 (Event Handler) 는무엇일까요? 이다양한이벤트들을핸들링 ( 처리 ) 해주는것입니다. 예를들면, 어떤버튼을했을때메시지창이뜨게하는등을말합니다.
More informationMicrosoft PowerPoint - CSharp-10-예외처리
10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.
More information제8장 자바 GUI 프로그래밍 II
제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로
More information쉽게 풀어쓴 C 프로그래밊
Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.
More informationJAVA PROGRAMMING 실습 08.다형성
2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스
More informationUI TASK & KEY EVENT
2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More information<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 19 장배치관리자 이번장에서학습할내용 배치관리자의개요 배치관리자의사용 FlowLayout BorderLayout GridLayout BoxLayout CardLayout 절대위치로배치 컨테이너안에서컴포넌트를배치하는방법에대하여살펴봅시다. 배치관리자 (layout manager) 컨테이너안의각컴포넌트의위치와크기를결정하는작업 [3/70] 상당히다르게보인다.
More informationgnu-lee-oop-kor-lec06-3-chap7
어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base
More information(Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory :
#2 (RAD STUDIO) In www.devgear.co.kr 2016.05.18 (Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory : hskim@embarcadero.kr 3! 1 - RAD, 2-3 - 4
More information다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher
More informationMicrosoft Word - ntasFrameBuilderInstallGuide2.5.doc
NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,
More informationVisual Basic 반복문
학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For
More informationC++ Programming
C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout
More informationMicrosoft PowerPoint - 04-UDP Programming.ppt
Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여
More information트레이 아이콘 어플리케이션의 제작
트레이아이콘어플리케이션의제작 (Creating Tray Icon Application) 윈도우 95 와 NT 4.0 에는작업바의우측에작업트레이라는부분이있다. 여기에있는아이콘은현재데스크탑에서실행되고있는윈도우를가지고있는어플리케이션이라기보다는도스시절에있었던램상주프로그램과비슷한역할을하는것이많다. 이번장에서는트레이에상주하는어플리케이션을제작하는방법에대해서알아보자. Shell_NotifyIcon
More informationPowerPoint 프레젠테이션
인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More informationMicrosoft PowerPoint - e pptx
Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells
More information제11장 프로세스와 쓰레드
제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드
More informationA Hierarchical Approach to Interactive Motion Editing for Human-like Figures
단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct
More information- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=
JPA 와 Hibernate - 스프링의 JDBC 대신에 JPA를이용한 DB 데이터검색작업 - JPA(Java Persistence API) 는자바의 O/R 매핑에대한표준지침이며, 이지침에따라설계된소프트웨어를 O/R 매핑프레임워크 라고한다. - O/R 매핑 : 객체지향개념인자바와관계개념인 DB 테이블간에상호대응을시켜준다. 즉, 객체지향언어의인스턴스와관계데이터베이스의레코드를상호대응시킨다.
More information[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme
8 차시메뉴와대화상자 1 학습목표 안드로이드에서메뉴를작성하고사용하는방법을배운다. 안드로이드에서대화상자를만들고사용하는방법을배운다. 2 확인해볼까? 3 메뉴 1) 학습하기 [ 그림 8-1] XML 을이용한옵션메뉴설정방법 public boolean
More informationMicrosoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx
2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html
More informationDLL(Dynamic Linked Library)
제 11 장동적연결라이브러리 11.1 DLL 의링크 11.2 DLL 의종류 실습 11-1 Implicit 링킹을통한정규 DLL 달력만들기 실습 11-2 Explicit 링킹을통한정규 DLL 달력만들기 실습 11-3 확장 DLL 을통한주민등록번호조회 프로그램만들기 DLL(Dynamic Linked Library) DLL 이란? 동적연결라이브러리 프로그램내부에라이브러리가있는것이아니라따로독립적으로실행가능한파일
More information어댑터뷰
04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationSOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax
SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES 2012.02.18 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone 02-2108-8030 Fax 02-2108-8031 www.softbase.co.kr Copyright 2010 SOFTBase Inc. All rights reserved 목차 1 장 : ActiveX
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationMicrosoft PowerPoint - 09-CE-5-윈도우 핸들
순천향대학교컴퓨터학부이상정 1 학습내용 윈도우핸들 윈도우찿기 윈도우확인및제거 윈도우숨기기 윈도우포커스 윈도우텍스트 윈도우핸들 순천향대학교컴퓨터학부이상정 3 핸들 (handle) 윈도우에서구체적인어떤대상을구분하기위해지정되는고유의번호 32비트의정수값 핸들은운영체제가발급하고사용자가이값을사용 실제값이무엇인지는몰라도상관없음 윈도우, DC, 브러쉬등등 순천향대학교컴퓨터학부이상정
More informationPowerPoint Presentation
Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More informationq 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2
객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가
More informationMicrosoft PowerPoint UI-Event.Notification(1.5h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2 사용자가인터랙션하는특정 View
More informationWindows 8에서 BioStar 1 설치하기
/ 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar
More information<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>
게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()
More information쉽게 풀어쓴 C 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More informationPowerPoint 프레젠테이션
Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State
More information. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요
. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요소로써안드로이드시스템에서는 Activities, Services, Content Providers,
More information학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More information歯MDI.PDF
E08 MDI SDI(Single Document Interface) MDI(Multiple Document Interface) MDI (Client Window) (Child) MDI 1 MDI MDI MDI - File New Other Projects MDI Application - MDI - OK [ 1] MDI MDI MDI MDI Child MDI
More informationPowerPoint Presentation
Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More information목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault
사용자매뉴얼 JetFlash Vault 100 ( 버전 1.0) 1 목차 1. 시스템요구사항... 3 2. 암호및힌트설정 ( 윈도우 )... 3 3. JetFlash Vault 시작하기 ( 윈도우 )... 7 4. JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 찾아보기... 10 JetFlash
More informationPowerPoint 프레젠테이션
실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3
More information<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 26 장애플릿 이번장에서학습할내용 애플릿소개 애플릿작성및소개 애플릿의생명주기 애플릿에서의그래픽컴포넌트의소개 Applet API의이용 웹브라우저상에서실행되는작은프로그램인애플릿에대하여학습합니다. 애플릿이란? 애플릿은웹페이지같은 HTML 문서안에내장되어실행되는자바프로그램이다. 애플릿을실행시키는두가지방법 1. 웹브라우저를이용하는방법 2. Appletviewer를이용하는방법
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationUI TASK & KEY EVENT
T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력
More information 메소드 오버로딩
객체지향언어로서의오브젝트파스칼 (Object Pascal As A OOP) 오브젝트파스칼의객체지향성을몰라도델파이어플리케이션을쉽게만들수있다. 단순히폼을하나만들고, 거기에여러가지컴포넌트들을추가하고, 이벤트핸들러에적당한내용의코드들을추가하면그걸로충분한것이다. 그렇지만, 이것을이해하면델파이가어떤방법으로작업을처리하는지이해할수있고, 자신만의컴포넌트를만들어내거나, 비교적커다란프로젝트를진행할때에커다란도움을받게될것이다.
More information윈도우즈프로그래밍(1)
제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장
More information델파이 4 프로그래밍의 이해 (Understandings of Delphi 4 Programming)
델파이 4 프로그래밍의이해 (Understandings of Delphi 4 Programming) 오브젝트파스칼과심도있는델파이프로그래밍의세계로들어가기전에, 이번장에서는델파이를사용하여첫번째윈도우어플리케이션을제작하고전반적인델파이의환경에대해서알아볼것이다. 내용의수준이높지는않겠지만, 흔히알고있었던내용이라고하더라도별생각없이넘어갔던것들도많을것이다. 그러면, 델파이 4
More information4장기본프로그래밍2
4-2 마우스 (Mouse) 마우스이벤트 Click 이벤트 마우스버튼이눌렸다가떼어질때발생 DblClick 이벤트 마우스버튼이두번눌렸다가떼어질때발생 MouseDown 이벤트 마우스버튼이눌렸을때발생 MouseUp 이벤트 마우스버튼이떼어질때발생 MouseMove 이벤트 마우스가움직일때발생 DragOver 이벤트 마우스버튼을누른상태에서끌기를했을때발생 DragDrop
More informationView Licenses and Services (customer)
빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차
More informationgnu-lee-oop-kor-lec10-1-chap10
어서와 Java 는처음이지! 제 10 장이벤트처리 이벤트분류 액션이벤트 키이벤트 마우스이동이벤트 어댑터클래스 스윙컴포넌트에의하여지원되는이벤트는크게두가지의카테고리로나누어진다. 사용자가버튼을클릭하는경우 사용자가메뉴항목을선택하는경우 사용자가텍스트필드에서엔터키를누르는경우 두개의버튼을만들어서패널의배경색을변경하는프로그램을작성하여보자. 이벤트리스너는하나만생성한다. class
More informationPowerPoint Presentation
public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +
More informationJUNIT 실습및발표
JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법
More informationPowerPoint Presentation
객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television
More informationDesign Issues
11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance
More information이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론
이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN
More informationMicrosoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt
AWT 컴포넌트 (1) 1. AWT 패키지 2. AWT 프로그램과이벤트 3. Component 클래스 4. 컴포넌트색칠하기 AWT GUI 를만들기위한 API 윈도우프로그래밍을위한클래스와도구를포함 Graphical User Interface 그래픽요소를통해프로그램과대화하는방식 그래픽요소를 GUI 컴포넌트라함 윈도우프로그램만들기 간단한 AWT 프로그램 import
More information예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A
제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor
More information9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요
9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요 [ 그림 9-1] 시간예약앱 활동과정 - 2 - [ 그림 9-2] 안드로이드 SDK Manager [ 예제 9-1]main.xml 1
More information아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상
Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는
More information윈도우 프로그래밍의 개념
제 8 장컨트롤과리소스 II 8.1 탭컨트롤 8.2 슬라이더컨트롤실습 8-1 도형의종류와색상출력하기 8.3 스핀컨트롤 8.4 프로그레스바컨트롤 8.5 IP 주소컨트롤 8.6 네트워크주소컨트롤 8.7 날짜 / 시간컨트롤 8.8 애니메이트컨트롤실습 8.2 데이터전송시뮬레이터작성하기 컨트롤및리소스 리스트컨트롤 (List Control) 트리컨트롤 (Tree Control)
More information슬라이드 제목 없음
MS SQL Server 마이크로소프트사가윈도우운영체제를기반으로개발한관계 DBMS 모바일장치에서엔터프라이즈데이터시스템에이르는다양한플랫폼에서운영되는통합데이터관리및분석솔루션 2 MS SQL Server 개요 3.1 MS SQL Server 개요 클라이언트-서버모델을기반으로하는관계 DBMS 로서윈도우계열의운영체제에서만동작함 오라클관계 DBMS 보다가격이매우저렴한편이고,
More information슬라이드 1
- 1 - 전자정부모바일표준프레임워크실습 LAB 개발환경 실습목차 LAB 1-1 모바일프로젝트생성실습 LAB 1-2 모바일사이트템플릿프로젝트생성실습 LAB 1-3 모바일공통컴포넌트생성및조립도구실습 - 2 - LAB 1-1 모바일프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new Mobile Project 메뉴를선택한다.
More informationMicrosoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100
2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack
More information경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P
Duplicator 는기본적으로원본하드디스크를빠르게복사본하드디스크에복사하는기능을하는것입니다.. 복사본 하드디스크가원본하드디스크와똑같게하는것을목적으로하는것이어서저용량에서고용량으로복사시몇 가지문제점이발생할수있습니다. 하드디스크는사용하려면, 디스크초기화를한후에포맷을해야사용가능합니다. Windows PC는 MBR과 GPT 2 개중에 1개로초기화합니다. -Windows
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More informationDBMS & SQL Server Installation Database Laboratory
DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.
More information오버라이딩 (Overriding)
WindowEvent WindowEvent 윈도우가열리거나 (opened) 닫힐때 (closed) 활성화되거나 (activated) 비활성화될때 (deactivated) 최소화되거나 (iconified) 복귀될때 (deiconified) 윈도우닫힘버튼을누를때 (closing) WindowEvent 수신자 abstract class WindowListener
More informationMicrosoft Word - src.doc
IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...
More information구조화 저장소 기법
구조화저장소기법 (Structured Storage Technique) 만약정해진포맷의파일형식을써야하는것이아니라, 데이터를저장할때대단히유연하고도강력한방법이존재한다면얼마나편리할까? 구조화저장 (structured storage) 이라는새로운방식으로이러한문제를해결할수있다. 구조화저장은 DocFIle 이나 OLE 복합파일 (OLE compound file) 이라는이름으로도불리고있는새로운저장방식이다.
More information2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.
10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1
More information제 1장 C#의 개요
C# 프로그래밍언어 MS사의앤더스헬스버그 (Anders Hejlsberg) 가고안.NET에최적화된언어컴포넌트지향프로그래밍언어자바의단점을보완 실행방법 : 자바 : 인터프리테이션, C#: 컴파일방법자바언어를대체할수있는언어 C# 의특징 객체지향언어 : 자료추상화델리게이트와이벤트멀티스레드, 예외처리연산자중복, 제네릭 C 계열의언어 C++ 와자바로부터영향을받았음. C:
More informationPowerPoint Presentation
자바프로그래밍 1 클래스와메소드심층연구 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 접근제어 class A { private int a; int b; public int c; // 전용 // 디폴트 // 공용 public class Test { public static void main(string args[]) { A obj = new
More information윈도우시스템프로그래밍
데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생
More information로거 자료실
redirection 매뉴얼 ( 개발자용 ) V1.5 Copyright 2002-2014 BizSpring Inc. All Rights Reserved. 본문서에대한저작권은 비즈스프링 에있습니다. - 1 - 목차 01 HTTP 표준 redirect 사용... 3 1.1 HTTP 표준 redirect 예시... 3 1.2 redirect 현상이여러번일어날경우예시...
More informationPowerPoint Presentation
자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,
More informationMVVM 패턴의 이해
Seo Hero 요약 joshua227.tistory. 2014 년 5 월 13 일 이문서는 WPF 어플리케이션개발에필요한 MVVM 패턴에대한내용을담고있다. 1. Model-View-ViewModel 1.1 기본개념 MVVM 모델은 MVC(Model-View-Contorl) 패턴에서출발했다. MVC 패턴은전체 project 를 model, view 로나누어
More informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More information<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>
SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......
More information슬라이드 1
전자정부개발프레임워크 1 일차실습 LAB 개발환경 - 1 - 실습목차 LAB 1-1 프로젝트생성실습 LAB 1-2 Code Generation 실습 LAB 1-3 DBIO 실습 ( 별첨 ) LAB 1-4 공통컴포넌트생성및조립도구실습 LAB 1-5 템플릿프로젝트생성실습 - 2 - LAB 1-1 프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new
More informationMicrosoft PowerPoint 장강의노트.ppt
클래스와객체 클래스와객체 객체 : 우리주변의어떤대상의모델 - 예 : 사람, 차, TV, 개 객체 = 상태 (state) + 행동 (behavior) - 예 : 개의상태 - 종자, 이름, 색개의행동 - 짖다, 가져오다 상태는변수로행동은메소드로나타냄 객체는클래스에의해정의된다. 클래스는객체가생성되는틀혹은청사진이다. 2 예 : 클래스와객체 질문 : 클래스와객체의다른예는?
More informationPowerPoint Presentation
FORENSICINSIGHT SEMINAR SQLite Recovery zurum herosdfrc@google.co.kr Contents 1. SQLite! 2. SQLite 구조 3. 레코드의삭제 4. 삭제된영역추적 5. 레코드복원기법 forensicinsight.org Page 2 / 22 SQLite! - What is.. - and why? forensicinsight.org
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More information