'GSI'에 해당되는 글 496건
- 2007.12.15 건담 더블오 11편 - 이미지 스샷
- 2007.12.14 [C#] DataGridView 이벤트 처리 - SelectionChanged
- 2007.12.14 아나짱이 선물해준 민정이 그림 ^^.. 2
- 2007.12.14 [WPF] Employee Info to Button Content - DataTemplate !!
- 2007.12.13 [WPF] ResourceTemplate And Button - ControlTemplate !!
- 2007.12.13 [WPF] Button With Template - ControlTemplate !!
- 2007.12.13 개발자를 위한 지식의 보고 msdn magazine 12월호
- 2007.12.12 [MFC] 폴더 경로 얻기
- 2007.12.12 [C++] 절대경로 분해하기 - 경로에서 파일명 알아내기
- 2007.12.10 [XML] XML 탐색하면서 데이터 읽기 1
- 2007.12.10 [MFC] 확장 Dll 만들기와 사용하기
- 2007.12.10 DevDays 강의자료 및 웹캐스트 내용
- 2007.12.07 FT 아일랜드 & 윤하.. 같이 엘리베이터 타다..
- 2007.12.07 [C#] DataSet & TreeView 연동 예제
- 2007.12.07 [C#] TreeView 내용 추가하기 1
[C#] DataGridView 이벤트 처리 - SelectionChanged
C# 2007. 12. 14. 21:27 |// DataGridView 객체 얻어 오기
DataGridView dgv = sender as DataGridView;
if (dgv == null)
return;
// 셀단위로 선택된 것이 있는지 찾는다. 하나도 없을때 리턴
if (dgv.SelectedCells.Count == 0)
return;
// DB와 연결되어 있을때. DataSet의 테이블 정보를 가져온다.
DataTable dtItem = azitro_testDataSet.Tables[0];
// DataRow를 가져 오기 위해서 DataGridView의 선택된 셀정보를 가져와서
// RowIndex를 리턴해 준다.
// RowIndex의 값을 사용해서 DataRow를 구한다.
DataRow rwItem = dtItem.Rows[dgv.SelectedCells[0].RowIndex];
// Row의 셀 정보를 가져온다. (DB 내용)
string strCatenum = rwItem["cate_Num"].ToString();
string strCatedep = rwItem["cate_dep"].ToString();
string strCatesel = rwItem["cate_sel"].ToString();
string strsiImg = rwItem["icon_img"].ToString();
txtSelName.Text = rwItem["item_name"].ToString();
txtSelContents.Text = rwItem["item_contents"].ToString();
// DB에 있는 내용을 사용해서 폴더 경로를 구한다.
string filepath;
filepath = Application.StartupPath
+ "\\itemlist\\"
+ strCatenum + "\\"
+ strCatesel + "\\"
+ strsiImg + ".png";
// 파일이 존재 하는지 검사한다.
if (File.Exists(filepath))
{
// 이미지를 연결하고 화면에 출력한다.
picItemImage.Image = Image.FromFile(filepath);
}
else
{
// 이미지가 없을때 null 처리
picItemImage.Image = null;
}
[WPF] Employee Info to Button Content - DataTemplate !!
WPF 2007. 12. 14. 02:05 |본 내용은 자료가 좀 많다. -.-
우선 정리는 시간이 걸리기 때문에 차후에 해야 할거 같다.
간단하게 정리 하면...
Employee 라는 직원 정보를 담고 있는 클래스를 하나 제작한다.
Button의 Content의 프로퍼티를 Employee 객체로 설정하여 버튼을 확장하는 예제이다.
여기에서 사용되는 내용은 ContentTemplate, DataTemplate, DataTemplateSelector, DataTemplate.Triggers 등에 대한 내용을 담고 있다.
(이 내용은 WPF 서적의 25장. 템플릿의 내용이다.)
관련소스 :
[WPF] ResourceTemplate And Button - ControlTemplate !!
WPF 2007. 12. 13. 17:36 |<ControlTemplate x:Key="btnCustom" TargetType="{x:Type Button}">
이 경우 TemplateBinding 표현에서 의존 프로퍼티의 클래스 이름을 앞에 붙일 필요는 없다. 바인딩에는 이 프로퍼티를 참조하라는 정보가 들어 있기 때문.
[MFC] 폴더 경로 얻기
C++ 2007. 12. 12. 14:23 | ITEMIDLIST *pidlBrowse;
char pszPathname[MAX_PATH];
BROWSEINFO BrInfo;
BrInfo.hwndOwner = GetSafeHwnd();
BrInfo.pidlRoot = NULL;
memset( &BrInfo, 0, sizeof(BrInfo) );
BrInfo.pszDisplayName = pszPathname;
BrInfo.lpszTitle = "선택하고자 하는 폴더를 선택해 주십시오.";
BrInfo.ulFlags = BIF_RETURNONLYFSDIRS;
// 다이얼로그 띄우기
pidlBrowse = SHBrowseForFolder(&BrInfo);
if( pidlBrowse != NULL)
{
// 패스를 얻어옴
BOOL bSuccess = ::SHGetPathFromIDList(pidlBrowse, pszPathname);
if ( bSuccess )
{
m_szSafedefaultPath = pszPathname; //<-- 여기서 값을 입력
UpdateData(FALSE);
}
else
{
MessageBox("잘못된 폴더명입니다.", "lol", MB_OKCANCEL|MB_ICONASTERISK );
}
}
[C++] 절대경로 분해하기 - 경로에서 파일명 알아내기
C++ 2007. 12. 12. 08:47 |//확장자 분리 모듈
TCHAR szDir[_MAX_DIR];
TCHAR szDrive[_MAX_DRIVE];
TCHAR szFileName[200] ;
TCHAR szFileExt[20] ;
_tsplitpath(saveFile, szDrive, szDir,szFileName, szFileExt);
// etc
//aze 파일 확장자를 소문자로 바꾸는 코드
CString fileName;
CString fileExt;
fileExt.Format("%s", szFileExt);
fileExt.MakeLower();
fileName.Format("%s%s%s%s", szDrive, szDir, szFileName, fileExt);
szFile = strrchr( *pFullPath, '\\' ) + 1;
이건 뒤에 있는 파일이름+확장자 를 뽑아 주는 함수.
[XML] XML 탐색하면서 데이터 읽기
C++ 2007. 12. 10. 19:30 |Dll 프로젝트를 하나 만들고 xml을 읽는 테스트를 진행해 봤다.
아래의 xml 파일을 읽는 테스트...
<?xml version="1.0" encoding="euc-kr" ?>
<Symbols>
<Scanorders>
<order Name="default">
<!--false이면 지그재그-->
<lineartype>true</lineartype>
<!--두개씩 쌍을 이룬다.
처음 두개는 진행방향 from > to 이고,
뒤에 두개는 흐름방향 이다.-->
<left>-1</left>
<right>-1</right>
<top>-1</top>
<bottom>-1</bottom>
</order>
</Scanorders>
<!--DefaultSymbol은 true이면 line이고, false이면 rectangle 이다.-->
<Symbol Name="none" Uid="0" Type="line" DefaultSymbol="true">
<HorizontalPixels>1</HorizontalPixels>
<VerticalPixels>11</VerticalPixels>
<SymbolWidth>12</SymbolWidth>
<SymbolHeight>13</SymbolHeight>
<ScanOrder>14</ScanOrder>
<TotalPixels>15</TotalPixels>
<TotalWidth>16</TotalWidth>
<TotalHeight>17</TotalHeight>
<Length>18</Length>
<Color>
<r>128</r>
<g>129</g>
<b>130</b>
</Color>
</Symbol>
<Symbol Name="none" Uid="0" Type="line" DefaultSymbol="true">
<!-- <HorizontalPixels>1</HorizontalPixels> -->
<VerticalPixels>2</VerticalPixels>
<SymbolWidth>2</SymbolWidth>
<SymbolHeight>2</SymbolHeight>
<ScanOrder>2</ScanOrder>
<TotalPixels>2</TotalPixels>
<TotalWidth>2</TotalWidth>
<TotalHeight>2</TotalHeight>
<Length>2</Length>
<Color>
<r>80</r>
<g>81</g>
<b>82</b>
</Color>
</Symbol>
<Symbol Name="none" Uid="0" Type="line" DefaultSymbol="true">
<HorizontalPixels>3</HorizontalPixels>
<VerticalPixels>3</VerticalPixels>
<SymbolWidth>3</SymbolWidth>
<SymbolHeight>3</SymbolHeight>
<ScanOrder>3</ScanOrder>
<TotalPixels>3</TotalPixels>
<TotalWidth>3</TotalWidth>
<TotalHeight>3</TotalHeight>
<Length>3</Length>
<Color>
<r>150</r>
<g>151</g>
<b>152</b>
</Color>
</Symbol>
</Symbols>
C++ 에서 테스트할때..
TRACE("--- xml start ---\n");
if(m_TestXmlWrap2.Load("d:\\symbol.xml")) {
// 정상적으로 읽었다면 여기로..
HRESULT hr;
MSXML2::IXMLDOMDocument2Ptr pDoc;
MSXML2::IXMLDOMNodeListPtr pNodeList;
MSXML2::IXMLDOMNodePtr pNodeSub;
MSXML2::IXMLDOMNodeListPtr pNodeSubList;
MSXML2::IXMLDOMNodePtr pNodeSubSub;
MSXML2::IXMLDOMNodePtr pNodeSubSubSub;
MSXML2::IXMLDOMElementPtr pNodeSubElement;
BSTR bszNodeValue;
TRACE("--- xml start ---\n");
if(m_TestXmlWrap2.GetDoc()) {
pNodeList = m_TestXmlWrap2.GetDoc()->selectNodes(".//Symbol");
for(int i = 0; i < pNodeList->length; i++) {
pNodeSub = pNodeList->Getitem(i);
// 같은 노드가 하나 이상은 존재 하지 않는다고 가정한다.
pNodeSubSub = pNodeSub->selectSingleNode(".//HorizontalPixels");
string value = "none";
if(pNodeSubSub)
value = (LPCTSTR)pNodeSubSub->Gettext();
TRACE1("Symbol/HorizontalPixels=%s\n", value.c_str());
}
}
TRACE("--- xml end ---\n");
TRACE("--- xml start ---\n");
if(m_TestXmlWrap2.GetDoc()) {
pNodeList = m_TestXmlWrap2.GetDoc()->selectNodes(".//Symbol");
for(int i = 0; i < pNodeList->length; i++) {
pNodeSub = pNodeList->Getitem(i);
pNodeSubList = pNodeSub->selectNodes(".//Color");
for(int i = 0; i < pNodeSubList->length; i++) {
pNodeSubSub = pNodeSubList->Getitem(i);
string value;
// 같은 노드가 하나 이상은 존재 하지 않는다고 가정한다.
pNodeSubSubSub = pNodeSubSub->selectSingleNode(".//r");
value = "none";
if(pNodeSubSubSub)
value = (LPCTSTR)pNodeSubSubSub->Gettext();
TRACE1("Symbol/Color/r=%s\n", value.c_str());
// 같은 노드가 하나 이상은 존재 하지 않는다고 가정한다.
pNodeSubSubSub = pNodeSubSub->selectSingleNode(".//g");
value = "none";
if(pNodeSubSubSub)
value = (LPCTSTR)pNodeSubSubSub->Gettext();
TRACE1("Symbol/Color/g=%s\n", value.c_str());
// 같은 노드가 하나 이상은 존재 하지 않는다고 가정한다.
pNodeSubSubSub = pNodeSubSub->selectSingleNode(".//b");
value = "none";
if(pNodeSubSubSub)
value = (LPCTSTR)pNodeSubSubSub->Gettext();
TRACE1("Symbol/Color/b=%s\n", value.c_str());
}
}
}
TRACE("--- xml end ---\n");
// 저장
m_TestXmlWrap2.Save(_T("d:\\save_test.xml"));
}
Dll 코드 :
[MFC] 확장 Dll 만들기와 사용하기
C++ 2007. 12. 10. 11:02 |MFC Extension DLL 을 체크 하고 생성한다.
// DLL 내부에서 class 생성할때
class AFX_EXT_CLASS CTest : public CDialog
이런 형태로 앞에 AFX_EXT_CLASS 를 추가한다.
// 해당 프로젝트에서 사용할때.
*.h, *.lib를 추가한다.
*.dll을 실행파일과 같은 경로 또는 시스템 폴더에 추가한다.
나머지 사용시에는 일반 클래스와 같이 동작한다.
이건. mfc에서 확장해서 리소스 및 다이얼로그 등등.. 모든 자원을 dll로 뺀 다음에
사용이 가능한듯 보인다.
DevDays 강의자료 및 웹캐스트 내용
Etc 2007. 12. 10. 08:42 |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
본 메일은 2007/12/07 기준으로 본 세미나에 참석하신 회원님들께 발송되는 발신전용 메일입니다. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FT 아일랜드 & 윤하.. 같이 엘리베이터 타다..
내 일상 2007. 12. 7. 23:39 |이틀 전인가. 문화 건물에서 같은 엘리베이터 탔는데. 일반 사람 같아 보이진 않아서. 혹시나 했더만.
역시 FT 아일랜드랑 윤하 였네욤..
[C#] DataSet & TreeView 연동 예제
C# 2007. 12. 7. 10:49 |여기서 알 수 있는 기술
1. TreeView에 DB의 정보를 입력하는 방법
2. Tree의 노드를 선택하면 좌측의 DataGridView의 Row를 제어
3. Detail Display
4. 옵션으로 좌측의 3개의 버튼으로 트리의 입력 방법을 몇개 예제로 구성해봤다.
이제 해야 될 건.. Drag & Drop
관련코드 :
[C#] TreeView 내용 추가하기
C# 2007. 12. 7. 08:34 |string[] childString = { "byoung1", "byoung2", "byoung3" };
입력방법 #1
{
treeView1.Nodes.Clear();
treeView1.BeginUpdate();
foreach (string str in parentString)
{
TreeNode tn = treeView1.Nodes.Add(str);
foreach (string substr in childString)
{
tn.Nodes.Add(substr);
}
}
treeView1.EndUpdate();
}
입력방법 #2
{
treeView1.Nodes.Clear();
treeView1.BeginUpdate();
foreach (string str in parentString)
{
treeView1.Nodes.Add(str);
}
foreach (TreeNode tn in treeView1.Nodes)
{
foreach (string substr in childString)
{
tn.Nodes.Add(substr);
}
}
treeView1.EndUpdate();
}
입력방법 #3
{
treeView1.Nodes.Clear();
treeView1.BeginUpdate();
TreeNode tn = new TreeNode();
foreach (string str in childString)
{
tn.Nodes.Add(str);
}
foreach (string str in parentString)
{
TreeNode tnParent = treeView1.Nodes.Add(str);
}
treeView1.EndUpdate();
}