트리뷰에 세계시간을 나타내려합니다.
아시아,북미,유럽같은 큰범주에 서브노드를 두어 각 도시나 나라이름을 표기한후
이와 동시에 한국과의 시차값을 표기한후 어떤 한 나라를 선택한경우 현재시간과
선택한 나라의 시차를 연산하여 시간표시를 하려고 합니다.
각 나라별 리스트를 만들때 시차값을 어떻게 주어야 하는지..
그리고 클릭이벤트에서 그 시차값과 현재시간값을 어떻게 연산해서 시간을 나타내야
하는지..
비주얼베이직으로는 이렇게 구현했습니다.
Private Sub Form_Load()
Dim nodx as Node
' 상위노드를 지정한다.
Set nodX = TreeView1.Nodes.Add(, , "r", "세계시간")
nodX.Tag = "Root"
' 하위노드를 지정한다.
Set nodX = TreeView1.Nodes.Add("r", tvwChild, "rchild1", "아시아")
Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a1", "일본")
nodX.Tag = -0 ' 시간을 계산하기 위함
Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a2", "중국,홍콩,대만,필리핀")
nodX.Tag = -1
Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a3", "싱가폴,말레이지아")
nodX.Tag = -1
Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a4", "몽고,마카오")
nodX.Tag = -1
Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a5", "태국,자카르타(인도네시아)")
nodX.Tag = -2
Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a6", "베트남,캄보디아")
nodX.Tag = -2
Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a7", "방글라데시")
nodX.Tag = -3
Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a8", "파키스탄")
nodX.Tag = -4
이런식으로 유럽,북미,아프리카등을 등록해서 아이템을 클릭하면 nodx.tag값을 어느 변수(timeterm= Cint(node.tag))에 치환한다음
lbltime.caption = format(now + timeserial(timeterm, 0, 0),"m월 d일 hh시 mm분 ss초') 이렇게 연산을 하여 시간을 나타냈습니다.
근데 델파이에서는 어떤 속성을 이용해야 timeterm같은 각 나라의 시차값을 갖을수있는지.. 또 어떤형식으로 시간연산을 할 수 있는지..
비주얼베이직과 비슷할것 같은데 잘 안되네요..
부디 많은 조언좀 부탁드리겠습니다.
좋은 하루 되세요.
델파이에서 트리노드에 Data란 속성이 있습니다. 아마도 비베의 트리노드에 있는
Tag속성과 비슷할것 같습니다. 비베는 한번도 사용해 보지 않아서...
const
Root:string = 'Root';
var
NewNode: TTreeNode;
begin
// 상위노드를 지정한다.
NewNode := TreeView1.Items.Add(nil, '세계시간');
NewNode.Data := @Root;
// 하위노드를 지정한다.
NewNode := TreeView1.Items.AddChild(NewNode, '아시아');
NewNode := TreeView1.Items.AddChild(NewNode, '베트남,캄보디아');
NewNode.Data := Pointer(-1);
......
end;
루트노드 데이터에 접근
var
S: string;
begin
S := string(TreeView1.Selected.Data^);
end;
서브노드 데이터에 접근
var
I: Integer;
begin
I := Integer(TreeView1.Selected.Data);
end;
시간 관련연산은 한델( http://www.delphi.co.kr/ )의 델파이 팁모아에 무지 많이
있습니다. 찾아보세요.
^^ 항상 즐코하세요.
최진석 wrote:
> 트리뷰에 세계시간을 나타내려합니다.
> 아시아,북미,유럽같은 큰범주에 서브노드를 두어 각 도시나 나라이름을 표기한후
> 이와 동시에 한국과의 시차값을 표기한후 어떤 한 나라를 선택한경우 현재시간과
> 선택한 나라의 시차를 연산하여 시간표시를 하려고 합니다.
> 각 나라별 리스트를 만들때 시차값을 어떻게 주어야 하는지..
> 그리고 클릭이벤트에서 그 시차값과 현재시간값을 어떻게 연산해서 시간을 나타내야
> 하는지..
> 비주얼베이직으로는 이렇게 구현했습니다.
>
> Private Sub Form_Load()
> Dim nodx as Node
>
>
> ' 상위노드를 지정한다.
> Set nodX = TreeView1.Nodes.Add(, , "r", "세계시간")
> nodX.Tag = "Root"
>
> ' 하위노드를 지정한다.
> Set nodX = TreeView1.Nodes.Add("r", tvwChild, "rchild1", "아시아")
>
> Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a1", "일본")
> nodX.Tag = -0 ' 시간을 계산하기 위함
> Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a2", "중국,홍콩,대만,필리핀")
> nodX.Tag = -1
> Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a3", "싱가폴,말레이지아")
> nodX.Tag = -1
> Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a4", "몽고,마카오")
> nodX.Tag = -1
> Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a5", "태국,자카르타(인도네시아)")
> nodX.Tag = -2
> Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a6", "베트남,캄보디아")
> nodX.Tag = -2
> Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a7", "방글라데시")
> nodX.Tag = -3
> Set nodX = TreeView1.Nodes.Add("rchild1", tvwChild, "a8", "파키스탄")
> nodX.Tag = -4
> 이런식으로 유럽,북미,아프리카등을 등록해서 아이템을 클릭하면 nodx.tag값을 어느 변수(timeterm= Cint(node.tag))에 치환한다음
> lbltime.caption = format(now + timeserial(timeterm, 0, 0),"m월 d일 hh시 mm분 ss초') 이렇게 연산을 하여 시간을 나타냈습니다.
> 근데 델파이에서는 어떤 속성을 이용해야 timeterm같은 각 나라의 시차값을 갖을수있는지.. 또 어떤형식으로 시간연산을 할 수 있는지..
> 비주얼베이직과 비슷할것 같은데 잘 안되네요..
> 부디 많은 조언좀 부탁드리겠습니다.
> 좋은 하루 되세요.
>