#define PI 3.1415926535897932384626433832795028841971693993751058209749445923078164064862089986280348253421170679821480865132823066479384460955058231725

double tmpA, tmpB,tmpC;
tmpB = edtX2->Text.ToDouble() - edtX1->Text.ToDouble();
tmpC = edtY2->Text.ToDouble() - edtY1->Text.ToDouble();
tmpA = sqrt(pow(tmpB, 2) + pow(tmpC, 2));

lblA->Caption = "빗변 :" + (String)tmpA;
lblB->Caption = "
밑변 :" + (String)tmpB;
lblC->Caption = "
높이 :" + (String)tmpC;

// 직각
lblAngleA->Caption =  "각도 A : " + (String)((atan2(tmpB, tmpC) + atan2(tmpC, tmpB)) * 180 / PI);

// 밑변에 인접한 각    tmpB tmpA의 각
lblAngleB->Caption =  "각도 B : " + (String)(atan2(tmpB, tmpC) * 180 / PI);

// 높이에 인접한 각    tmpC  tmpA의 인법한 각
lblAngleC->Caption =  "각도 C : " + (String)(atan2(tmpC, tmpB) * 180 / PI);


---------------------------------------------------------------------------------------------

한변과 한 각을 알때 처리..


밑변이 x 이고 한각이 a 이고 다른 한각이 90도일때의

높이 구하는 방법은

? = x * tan(a) ;

간단히 구할수 있음...

컴포넌트를 작성하거나 남이 만든 컴포넌트를 사용하다보면 아이콘이 맘에 들지 않거나 없는 경우가 많이 있다.

이럴 경우 X박스를 그냥 써도 되나..

존심상 나타나게 하고 싶을때..는

다음과 같은 방법을 사용하면 된다..

만약 소스에 dcr이나 res 파일이 있다면 그 파일을 사용하면 된다..
이 경우 이름이 같으면 된다(뭐.. 이름이 다르다면 소스와 같은 이름으로 만들면 된다..
가끔씩 이름만 같아도 안 되는 경우가 있다..
이럴때는 Resource 에디터를 이용해 리소스를 열어보면 리소스 명이 소스명과 다를 경우가 태반이다..
리소스명을 소스와 같은 파일로 작성해 준다..(어렵지도 않음)

compile과 make 작업을 다시 해주면 짜잔~~ 하고 나타날 것이다.. (가끔은 해당 컴포넌트를 제거하고 재설치 해야 되는 경우도 있다)

소스 상단부에 해당 리소스를 넣거나 파일 추가시 넣어주는 방법도 있으나 위의 작업이 되지 않는다면 어차피 나타나지 않는다..
직접 리소르를 넣어줄경우 가끔씩 이미 패스가 지정되어서 안 된다고 할때는 기존 패스를 삭제하고 리소스를 추가하면 나타날 것이다..

허접한 팁하나를 올림...

전에 만들어 보았던 이벤트 다이얼로그의 VCL 판이다..

MFC에서는 여러 함수를 사용했는데.. BDS에서는 간단하게 구성해 보았다..

스플래쉬 폼이랑 비슷하지만.. 이번것은 메시지를 2개 처리하고 시간을 초단위(1초 = 1)로 처리하고 위치를 지정할 수 있게 바꾸어 보았다.

생성부 함수를 조금 변경해서 작성했다..

타이머를 하나 얹어서 타이머 시간이 되면 사라지는 방식이다.(정밀한 시간 제어가 필요없는 것이어서.. 그냥.. 간단하게 작성했다..)

전과 다른점은 화면 배경을 jpg 화면을 올려서 구분을 지어 주었다..

차후에 변경한다면.. 이벤트에 맞는 그림 처리까지 해서 더 자세한 설명을 해주는것도 하나의 방법일 듯 싶다..
그리고, 빠트린 창을 클릭하면 자동으로 사라지는 것도 추가해야 될듯 싶다..

그리고, 한가지 더.. 영역을 임의로 정해서 투명창을 작성하였다.. 이 방법은 추후 다른 프로그램에서도 사용이 가능할 듯 싶다..


예전에 작업하던것을 날려 버렸다.. ㅠㅠ

그래서, 어제 오늘 맘 잡고 다시 시작했다...

어느 정도 작업이 된듯하다.. 매끄럽지 않은 부분도 많지만...

그래도 내 혼자 쓰기에는 아무런 문제가 없는듯.. 뭐.. 이상한 부분은 다시 수정하면 되니까..

우선 1차 수정안을 올려 놓는다...

추후에 변경되면 화일을 변경하면 되니까..

저작권 문제가 있을지 모르니...

암호는 걸어놔야겠군.

수정기간 : 1.5day
invalid-file

Comp32x

간단하지만.. 자주 까먹는 관계로 정리..
VCL에서 날짜는 상수부분에서 처리
시간은 소수점 이하 지수부에서 처리..
시간 날짜 동시에 처리할 경우에는 double이나..TDateTime 변수 사용..

///////////////. hpp ///////////////////////////////////////
#include "time.h"

// 변수 정의
 TTime  tMin;    // 경과시간
 TTime  tEnd;    // 마지막 정지 시간
 TTime  tNow;   // 현재 사용 시간 
 TTime  tPost;   // 사용 시간 임시 저장용..  
 TTime  tStart;   // 사용 시간 임시 저장용..

 TTime d_time ;

// TTime 은 시간만 처리시(소수점 이하만 구함)
// TDate 는 날짜만 처리히(상수부만 처리)
// TDateTime 는 상수와 지수부분 모두 처리.

/////////////// .cpp //////////////////////////////////////

   //변수 기본값 처리..
   tMin = 0;
   tEnd  = Now();   // 날짜와 시간 모두 처리.. 시간만 처리시는 Time(),  날짜만 처리시는 Data()
   tPost = 0;  
   tStart = Now();  

   // 일시 멈춤시 이전값 저장..
    tPost =  tMin;


    // 시간 구하기..
    tNow = Now(); 
    tMin = tNow - tEnd + tPost;

   // 시간 표시.
 d_time = Global->tMin;  
 DecodeTime(d_time, Hour, Min, Sec, MSec);
 lbl_UseTime->Caption = AnsiString().sprintf("작업 시간 : %02d:%02d:%02d", Hour, Min, Sec);
폼을 기본으로 작성된 클래스라면..

TMyClass MyClass; 

로 생성하면 됨...

VCL 기반이라면...

아래의 방법으로 생성..

TMyClass* pMyClass = new TMyClass();

아래는 볼랜드포럼에서 퍼온 내용...

========================================================================================================


클래스 자체가 꼭 new 로 생성을 해야만 메모리가 할당되는 것은 아닙니다.

class TMyClass
{
    Method1()
    ...
}

으로 만드신 베이스 클래스라면 일반 스트럭처와 동일하게 사용할 수 있습니다.
스트럭처와 클래스는 분명 큰 차이점이 있지만 그 기반은 동일하니까요.

TMyClass MyClass;

MyClass.Method1() 의 형식으로 호출이 가능하며 메모리 누수와는 관계가 없습니다.
그리고 MyClass 는 컴파일 시에 TMyClass 만큼의 메모리가 할당되며 프로그램 종료시에
해제됩니다.

보통 빌더에서 new 를 사용해서 객체를 생성하는 것은 델파이에서 온 VCL Class 때문입니다.
VCL 클래스는 반드시 new 를 통한 메모리 할당을 통해서 이용해야 합니다.
VCL 의 구조적 특성( ^^ 예전에 읽었는데 영문이라 대충 읽어서 ... ) 때문입니다.

만약 클래스를 VCL 클래스 기반으로 만든다면 VCL 베이스 클래스인 TObject 를
상속받으시면 됩니다.

class TMyClass : public TObject
{
    Method1()
    ...
}

TMyClass* pMyClass = new TMyClass();
pMyClass->Method1();

이 되는 것이죠....
6.0 이하 버전 --------------------------
컴파일  전
Project->Options... 메뉴를 선택해서

"Linker" tab 에서, "Linking"이라는 항목에서

"Use dynamic RTL"을 disable
"Packages" tab에서 "Build with runtime packages"을 disable


OCX나 Active X 를 사용시, registry setting

bds 2006 -------------------------------

위의 내용과 동일..

UI변경으로..
페이지컨트롤 대신 트리뷰로 변경 되었음..
  Linker 노드와 Packages 노드에서 찾으면 됨..

'1.소프트웨어 이야기 > 00.VCL(C++ Builder, Delphi)' 카테고리의 다른 글

BCB에서 클래스 참조시 주의사항  (0) 2007.12.06
볼랜드 기본 칼라 Define  (0) 2007.12.06
INI 파일  (0) 2007.12.06
// Color Define
//////////////////////////////////
#define NONE                 clNone
#define AQUA                  clAqua
#define BLACK                clBlack
#define BLUE                   clBlue
#define CREAM                clCream
#define DARKGRAY           clDkGray
#define FUCHSIA               clFuchsia
#define GRAY                   clGray
#define GREEN                 clGreen
#define LIME                    clLime
#define LIGHTGRAY          clLightGray
#define MAROON             clMaroon
#define MEDIUMGRAY      clMedGray
#define MINTGREEN        clMoneyGreen
#define NAVYBLUE          clNavy
#define OLIVEGREEN       clOlive
#define PURPLE              clPurple
#define RED                    clRed
#define SILVER                clSilver
#define SKYBLUE             clSkyBlue
#define TEAL                  clTeal
#define WHITE                 clWhite
#define YELLOW              clYellow
#define DEFAULT             clDefault

'1.소프트웨어 이야기 > 00.VCL(C++ Builder, Delphi)' 카테고리의 다른 글

BDS 단독 실행 프로그램 만들기  (0) 2007.12.06
INI 파일  (0) 2007.12.06
컨트롤 동적 생성..  (1) 2007.12.06

+ Recent posts