2008년 4월 9일 수요일

VB : 픽쳐박스(picturebox),이미지(image) 이동 방법

[질문]픽쳐박스(picturebox),이미지(image) 이동 방법좀 봐주세요.  | etc 2006-07-31 오후 2:22:30
 
용대건 (sunny)    번호: 246824   / 평점:  (-)  / 읽음:342

하다가 잘 안되는게 있어서 고수님들 도움좀 받을려고 올립니다.
픽쳐박스 안에 이미지 개체를 놓았구요..
픽쳐박스 안에서 이미지 개체를 드래그해서 미세하게 이동 시킬려고 합니다.

Private Sub img1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    vSavedMousePointX = X
    vSavedMousePointY = Y
   img1.Drag 1
End Sub

그래서 픽쳐박스 DragDrop 이벤트안에..

Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)
   img1.Move X - vSavedMousePointX, Y - vSavedMousePointY, img1.Width, img1.Height
   img1.Drag 2  
End Sub

문제는 픽쳐박스내에서 드래그해서 움직이는 마우스위치값 (X,Y)이  이미지개체의 위치값 보다 크면 
--( 이미지 개체 사이즈값 보다 크면 ) -- 잘 되는데 ( 마우스를 드롭한 위치에 잘 놓이게 되는데) --
값이 이미지 개체 값보다 작거나 같으면--( 조금 밖에 안움직이면)--  안 움직이고 원재 자리로 되돌아 간다는 것입니다.
그래서  이미지개체 선택후 마우스 드래그 하면서 값을 보니.. 포인터가 이미지 개체를 벗어난 이후 부터 x, y 값을
인식하는 것 같더라고요...저는 약간 만 움직여도 정확한 위치에 놓이게 하고 싶은데...
어떻게 방법이 없을 까요?  도와 주세요..

 
 
[답변]DragDrop 이벤트가 자기 자신에게 일어나서 그렇습니다. 2006-07-31 오후 2:41:23
 
홍인천 (rhdgj)    번호: 246831   / 평점:  (-)  

놓은 위치가 자신의 위치라면...
DragDrop 이벤트는 컨테이너인 Picture1에서 일어나는게 아니라..
자기 자신...즉 image1 에서 일어납니다...
아래...코드를 약간 변경했습니다...
님과는....img1 이 image1으로 변경된거 외에는 바뀔게 없으니...복사해다가 고쳐서 사용하세요...^^

Dim vSavedMousePointX As Single, vSavedMousePointY As Single
Dim nOrgLeft As Long, nOrgTop As Long
Private Sub Image1_DragDrop(Source As Control, X As Single, Y As Single)
   Image1.Move nOrgLeft + X - vSavedMousePointX, nOrgTop + Y - vSavedMousePointY, Image1.Width, Image1.Height
   Image1.Drag 2
End Sub

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    vSavedMousePointX = X
    vSavedMousePointY = Y
    nOrgLeft = Image1.Left
    nOrgTop = Image1.Top
   Image1.Drag 1
End Sub

Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)
   Image1.Move X - vSavedMousePointX, Y - vSavedMousePointY, Image1.Width, Image1.Height
   Image1.Drag 2
End Sub

 
 
[답변]윗분말이 마자요 2006-07-31 오후 2:47:50
 
이명하 (mhlee36)    번호: 246833   / 평점:  (-)  
 Private Sub Img1_DragDrop(Source As Control, X As Single, Y As Single)
     Img1.Move Image1.Left + (X - vSavedMousePointX), Img1.Top + (Y - vSavedMousePointY), Img1.Width, Img1.Height
   Img1.Drag 2
End Sub
이거 추가히시면 될듯
 

2008년 4월 7일 월요일

입이 쫘악 벌어지는 정말 멋진 키보드.. 역쉬! 애플

아래 사진을 보니.. 지름신이 강림하실것 같다 --;; 완전 갖고 싶은 키보드 1순위..

키보드 사러가기..

윈도우에서도 동작되고 위에 특수키는 프로그램 설치하면 된다네.. 윈도우에서도.. (아래 키보드는 MacOS용임~~)

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

CISCO : 메신저(MSN) 프로그램 업무시간 Blocking 예

메신저 프로그램들에 대한 업무시간에만 Blocking 시키는 예입니다.
웜이 메신저를 타고 급속히 번질 때도 사용하시면 됩니다.
방화벽이 있는 곳은 방화벽에서 차단시킬 테지만, 그렇지 않은 중소규모의 기업이나 학교등에서 사용하시면 편합니다.
 
감사합니다.
 
## 본 내용은 회사와 무관한 개인적인 자격으로 올리는 글입니다.##
 
-----Original Message-----
From: Woo Hyung Choi (whchoi)

안녕하십니까?
최우형 입니다.
답변이 늦었습니다.
 
MSN은 기본적으로 접속시 인증 포트를 TCP 1863을 사용하도록 되어 있습니다.
따라서 간단하게 1863을 Blocking 시키면 간단히 해결될 일이지만, 문제는 1863을 차단하게 되면 자동으로 TCP 80 Port를 통해 인증 접속하도록 구성되어 있습니다.
아래 Router 에서 Netflow를 Enable 시켜 놓고 보시면 MSN의 동작방식을 금방 보실 수 있습니다.
최초 인증 접속시 동작과정입니다.
목적지 포트가 16진수로 0747 입니다.
10진수로 보면 TCP 1863입니다.
 
Router#show ip cache flow
중략
SrcIf         SrcIPaddress    DstIf         DstIPaddress    Pr  SrcP  DstP  Pkts
 
 
Fa0           10.0.0.2              Di1          207.46.104.20    06   051B  0747     4
 
 
MSN을 통한 유해트래픽이 급속도로 번질 경우나, 기업에서 정책적으로 MSN메신저를 금지 시키실 경우에는 다음과 같이 구성하시면 됩니다.
 
Cisco Router or Catalyst Switch에서 구성 방법
 
ACL 구성법
access-list 101 deny   ip any 207.46.104.0 0.0.0.255  --> MSN 인증서버 IP address
access-list 101 deny   tcp any any eq 1863 --> MSN 인증 port
access-list 101 deny   tcp any any range 6891 6900 --> 파일전송
access-list 101 deny   udp any any eq 6901-->음성채팅
access-list 101 permit ip any any
 
ACL 적용 예제
interface fastethernet 0 --> 내부 이더넷
ip access-group 101 in
 
유연성있게 구성하는 방법--> 추천!!!
 
A 회사의 MSN 사용 지침
 
MSN은 월요일~금요일 아침 08:00 부터 18:00 까지 근무시간에는 사용하지 못하도록 구성한다.
하지만, 주말과 근무 외 시간 18:00 이후 부터는 사용 할 수 있도록 한다.
 
시스코 라우터 또는 Catalyst Switch 에서 구성 방법
 
Router#sh clock
16:58:53.719 KST Sat Nov 1 2003
현재 라우터 또는 스위치의 시간 설정 확인
 
Time-Based ACL 구성 방법
 
access-list 101 deny   ip any 207.46.104.0 0.0.0.255  time-range msn
access-list 101 deny   tcp any any eq 1863 time-range msn
access-list 101 deny   tcp any any range 6891 6900 time-range msn
access-list 101 deny   udp any any eq 6901 time-range msn
access-list 101 permit ip any any
 
ACL 적용
 
interface fastethernet 0 --> 내부 이더넷
ip access-group 101 in
 
Time Rule 설정
 
Router(config)#time-range msn
Router(config-time-range)#periodic weekdays 08:00 to 18:00  --> 월요일 부터 금요일 까지 매일 아침 8시 부터 저녁 6시 까지만 적용
 
정상 작동 확인
 
Router#sh access-lists
Extended IP access list 101
    deny ip any 207.46.104.0 0.0.0.255 time-range msn (inactive) --> 현재 시각이 토요일 이므로 자동 비활성
    deny tcp any any eq 1863 time-range msn (inactive)
    deny tcp any any range 6891 6900 time-range msn (inactive)
    deny udp any any eq 6901 time-range msn (inactive)
    permit ip any any
 
한번 구성해 보시고, 제대로 Blocking 되는지 Test 해 보시기 바랍니다.
감사합니다.
 
P.S
혹시 제대로 Blocking 되지 않을 경우 아래 ACL 에 아래 IP 영역을 추가해 보시면 됩니다.
제가 Test 한 바로는 207.46.104.x만 Blocking 시키면, 차단되는 것을 확인 했습니다.
 
64.4.130.0/24
207.46.104.0/24
207.46.106.0/24
207.46.107.0/24
207.46.108.0/24
207.46.110.0/24

2008년 4월 1일 화요일

Google 사투리 번역을 소개합니다

http://www.google.co.kr/landing/saturi/

'Google 사투리 번역'이란 무엇인가요?

Google 사투리 번역은 사람이 직접 번역하는 대신 고도의 기계번역 기술을 활용해 제공되는 서비스입니다. Google KoreaR&D 센터는 여러 사투리 조합에 대한 통계 번역 시스템을 자체 개발했으며 현재 Google 번역을 통해 서비스 되고 있습니다. 예를 들어 번역하고자 하는 문장을 전라도 사투리로 넣으면, 해당 문장을 다양한 사투리로 번역하여 문서를 검색하고, 검색된 문서들은 다시 전라도 사투리로 변환되어 사용자에게 제공됩니다. Google 사투리 번역을 이용하면 다른 지역의 사투리를 모르더라도 불편 없이 모든 문서를 검색할 수 있습니다.

사투리 번역을 활용하고 있는 Google의 다른 서비스는 어떤 것들이 있나요?

Google 번역에서 사투리 직접 번역이 가능합니다. 글상자 안에 문장을 입력한 후 원하시는 사투리 조합을 택하고 "번역하기" 버튼을 누르시면 우측에 해당 사투리로의 번역 결과가 나타납니다.

예시1: Google 사투리 번역 기술은 경상도 사투리에서 많이 나타나는 압축된 단어나 문장도 인지하여 번역해줍니다.

예시2: 전라도 사투리에서 많이 나타나는 단어의 모호성을 문맥에 맞춰 해석한 후 번역하여 보여줍니다.

Google 토크에서도 사투리 번역 기능을 사용할 수 있습니다. Google 토크 계정 생성시 이용자가 구사하는 사투리의 지역 정보를 입력하면 됩니다. 제주도 사투리를 사용하는 친구와 채팅할 때에는 제주도 사투리를 자동 검출해서 이용자의 사투리로 자동 번역해주기 때문에 의사소통이 훨씬 원활해집니다.

Gmail에서도 사투리 번역 기능을 사용할 수 있습니다. 사투리로 작성된 메일을 받은 경우 "사투리 번역" 버튼을 누르면 메일의 내용이 자동으로 이용자의 지역 사투리로 변환됩니다. Google은 보다 나은 사투리 번역을 제공하기 위해 계속 노력하고 있습니다. 그러나 아무리 정교한 소프트웨어라도 원어민의 유창함을 따라갈 수는 없습니다. 사투리 번역 기능이 아직 완벽하지 않아 가끔 이해하기 어려운 경우가 발생할 수 있는데, 이 때는 해당 문장을 선택하면 원문을 보실 수 있습니다.

멜론 DCF 일괄 자동변화 - 오토멜론 1.32

http://blog.naver.com/qkrqudgh84/80034766800

2008년 3월 31일 월요일

MSFlexGrid의 내용 저장하기(to Excel)

CommonDialog Box컨트롤과 MSFlexGrid컨트롤, File명을
인자로 넘겨주면 해당 MSFlexGrid의 내용을 Excel에서 읽을 수 있는
파일 형태로 저장하는 프로시저 입니다.

Public Sub FileSave(dlgSaveAs As CommonDialog, ByVal TableHFGrid As MSHFlexGrid, ByVal FName As String)
   
    Dim OneRec As String
    Dim i As Integer
    Dim Cnt As Long
   
    ' Cancel을 True로 설정합니다.
    dlgSaveAs.CancelError = True
    On Error GoTo ErrHandler
   
    dlgSaveAs.Flags = cdlOFNOverwritePrompt Or cdlOFNExplorer Or cdlOFNLongNames
    dlgSaveAs.Filter = "Comma separated values(CSV)|*.csv|모든 파일 (*.*)|*.*"
    dlgSaveAs.DialogTitle = FName & " 자료 저장"
    dlgSaveAs.InitDir = App.Path & "\Data"
    dlgSaveAs.FileName = FName
    dlgSaveAs.ShowSave
   
    If Len(dlgSaveAs.FileName) = 0 Then Exit Sub
   
    Open dlgSaveAs.FileName For Output As #1    ' Open file for output.
       
        '/ Header(Record Field명)를 출력함  /
        OneRec = TableHFGrid.TextMatrix(0, 1)
        For i = 2 To TableHFGrid.Cols - 1
            OneRec = OneRec & "," & TableHFGrid.TextMatrix(0, i)
        Next i
        Print #1, OneRec
   
        '/ Data를 출력함    /
        For Cnt = 1 To TableHFGrid.Rows - 1
            DoEvents
            OneRec = TableHFGrid.TextMatrix(Cnt, 1)
            For i = 2 To TableHFGrid.Cols - 1
                OneRec = OneRec & "," & TableHFGrid.TextMatrix(Cnt, i)
            Next i
            Print #1, OneRec
        Next Cnt
       
    Close #1
   
    Exit Sub
   
ErrHandler:
   
    If ERR.Number = cdlCancel Then  '/ 취소버튼(32755)이 눌려진경우
        ' 취소 단추를 눌렀습니다.
    Else
        MsgBox ERR.Number & ":" & ERR.Description, vbQuestion
    End If
   
    Exit Sub

End Sub

Msflexgrid의 내용을 excel에 원하는 위치에 삽입하려할때?

기존파일에 넣는 방법이나 새파일 열어서 하는 방법이나 별로 차이점이 없으니까
엑셀의 새파일을 열어서 데이터를 넣는 소스를 만들어 봤습니다.
커멘드버튼 하나와 플렉스그리드 하나를 그리고 엑셀 오브젝트를 참조하시고
다음을 실행시켜보세요. 즐프하시고 다 주석달기가 모해서 모르는 것 있으시면 재질문 해주시길...

Option Explicit

Private Sub Command1_Click()
    Dim i As Integer
    With MSFlexGrid1
        .FixedRows = 0
        .FixedCols = 0
        .Rows = 0
        .Cols = 5
        .AddItem "aaa" & vbTab & "bbb" & vbTab & "ccc" & vbTab & "ddd" & vbTab & "eee"
        .AddItem "ggg" & vbTab & "hhh" & vbTab & "kkk" & vbTab & "eee" & vbTab & "www"
        .AddItem "ddd" & vbTab & "ooo" & vbTab & "www" & vbTab & "qqq" & vbTab & "ddd"
    End With
    Call GridToExcel
End Sub
Private Sub GridToExcel()
    Dim Xl As New Excel.Application
    Dim GridRow As Long
    Dim GridCol As Long
   
    With Xl
        .Workbooks.Add
        .Worksheets("Sheet2").Select
       
        For GridRow = 0 To MSFlexGrid1.Rows - 1
       
            For GridCol = 0 To MSFlexGrid1.Cols - 1
                .Cells(GridRow + 5, GridCol + 1) = MSFlexGrid1.TextMatrix(GridRow, GridCol)
            Next GridCol
           
        Next GridRow
       
        .Visible = True
    End With
   
End Sub