사이드에 스크롤 하면 따라오는 조그마한 메뉴를 구현하는 방법

스크립트연결 (IE, NS 공통)
<script language="javascript" src="ScrollObject.js"></script>


코드적용
// InternetExplorer
onScroll =
  RegistScrollObject(document.all.[스크롤객체이름], [IsFixed]);
// Netscape
onScroll =
  RegistScrollObject(document.[스크롤객체이름], [IsFixed]);


동작과 관련된 변수
var Fixed = 0; // 고정

var LimitLeft = 712;   // 문서의 Left 제한
var LimitTop = 100;    // 문서의 Top 제한
var LimitRelLeft = 40; // 스크롤 시 Left 제한
var LimitRelTop  = 40; // 스크롤 시 Top 제한
var Interval = 1; // 이동처리 시간간격(ms)
var Smooth = 50;  // 부드러운 정도
var MinStep = 4;  // 점프 제한 수치, 무한루프 방지용

델파이 초보자라서 SetForegroundWindow 적용이 안되는 부분 해결을 못했다. ㅜㅜ

적용전
program HttpDown;

uses
  Forms,
  FmHDMain in 'FmHDMain.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


적용후
program HttpDown;

uses
  Forms,
  SysUtils,
  Windows,
  Mutex in 'Mutex.pas',
  FmHDMain in 'FmHDMain.pas' {Form1};

{$R *.res}

const
  MutexName = 'JmLaunch';

var
  hMutex: HWND;
  ClassNames: array[0..0] of PAnsiChar = (
    'TFrmLMain'
  );

begin
  if Mutex.CheckMutex(MutexName) then
  begin
    Mutex.SetActiveWindows(ClassNames, SizeOf(ClassNames) div 4);
    Exit;
  end;

  try
    hMutex := Mutex.CreateSecurityMutex(MutexName);
    if hMutex = 0 then
    begin
      raise Exception.Create('Mutex 생성 실패');
    end;

    try
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    finally
      ReleaseMutex(hMutex);
    end;
  except
    on E: Exception do Application.ShowException(E);
  end;
end.

'Windows > RAD Studio' 카테고리의 다른 글

[RAD] GExpert - Debug 창 이용하기  (0) 2007.10.01
[JS] ScrollObject  (0) 2007.09.21
[CB] Mutex 를 이용한 실행중복 방지  (0) 2007.09.10
[CB] KeyPad Virtual Key Value  (0) 2007.06.09
[DEL] Deprecated Lists  (0) 2007.06.02
프레임 버퍼에 그림을 그리는 기능을 모아놓은 GL 및 GLU
윈도우를 생성하거나 사용자 상호 작용을 처리하는 라이브러리: AUX 또는 GLUT

GL Lib (Main Library) - "gl.h" "opengl32.lib"
prefix - "gl"

GLU Lib (Utility Lib) - "glu.h" "glu32.lib"
prefix - "glu"
고급기능(곡선, 곡면, 고급뷰잉)

AUX Lib (Auxiliary Lib for App interface) - "glaux.h"
prefix - "aux"
응용프로그램 인터페이스 Tool kit

GLUT Lib (Utility Toolkit Lib) - "glut.h" "glut32.lib"
prefix - "glut"
최초 x-windows 에서 사용 시자가

GLX/AGL/WGL
Data Types - GLshort, GLdoublel 등. prefix - "GL"
Function Naming - <prefix><command><postfix> ex)glcolor3f - GL함수, Color함수, 매개변수float3개

'Windows > 개발잡담' 카테고리의 다른 글

[Win32] 변수 형 및 접두어 뜻  (0) 2007.09.18
프리젠테이션 - 각종 효과들의 도배  (0) 2006.11.21
MBCS, UNICODE 프로그래밍  (0) 2006.09.30
표준?  (0) 2006.09.01
어처구니 없는 마케팅  (0) 2006.08.30
#define BYTE unsigned char
#define WORD unsigned short
#define DWORD unsigned long
#define LONG long
#define LPSTR char*

enum BOOL {FALSE, TRUE}


Prefix
cb 바이트수(count of bytes)
dw 부호없는 long 형 정수(double word)
h 핸들(handle)
sz NULL 종료 문자열(Null termiinated)
w 부호없는 정수형(word)
i 정수형(integer)
b 논리형(bool)
c 문자형(chara)
str 문자열(string)

'Windows > 개발잡담' 카테고리의 다른 글

[GL] OpenGL Library 구성  (0) 2007.09.18
프리젠테이션 - 각종 효과들의 도배  (0) 2006.11.21
MBCS, UNICODE 프로그래밍  (0) 2006.09.30
표준?  (0) 2006.09.01
어처구니 없는 마케팅  (0) 2006.08.30

[2013-07-01] 최근 버전에서는 TMutex 를 이용하여 간단하게 할 수 있다.

#include <System.SyncObjs.hpp>

SECURITY_ATTRIBUTES SecAttr;

char SecDesc[[SECURITY_DESCRIPTOR_MIN_LENGTH];

SecAttr.nLength = sizeof(SecAttr);

SecAttr.bInheritHandle = FALSE;

SecAttr.lpSecurityDescriptor = &SecDesc;

::InitializaSecurityDescriptor(SecAttr.lpSecurityDescriptor, SECURITY_DESCRIPTOR_REVISION);

::SetSecurityDescriptorDacl(SecAttr.lpSecurityDescriptor, TRUE, 0, FALSE);

try {

    TMutex *pMutex = new TMutex(&SecAttr, true, AMutexName, false);

} catch (...) {

    return 0;
}

if (pMutex->WaitFor(100) != wrSignaled)

    return 0;

// TODO: Something

pMutex->Release();

delete pMutex;



'Windows > RAD Studio' 카테고리의 다른 글

[JS] ScrollObject  (0) 2007.09.21
[DEL] Mutex 를 이용한 실행중복 방지  (0) 2007.09.21
[CB] KeyPad Virtual Key Value  (0) 2007.06.09
[DEL] Deprecated Lists  (0) 2007.06.02
[CB] 문자열 변환/검증  (0) 2007.05.30
FOREIGN KEY 를 명시하면 참조하는 테이블에 있는 값만 가능하게 된다.
여기까지만 알고있었다.
자료변경(UPDATE/DELETE) 시에 무식하게 일일이 수정하는 만행을 저지르곤 했다.
ON 이라는 키워드가 존재할 줄이야.

 FOREIGN KEY(fStoreId,fSerial) REFERENCES TBLREQUEST(fStoreId,fSerial)
   ON UPDATE CASCADE
   ON DELETE NO ACTION

첫줄은 이미 알던 개념이었다.
ON UPDATE: 업데이트 시
ON DELETE: 삭제 시

CASCADE 의 사전 의미는 "[컴퓨터] 층계형" 이다.
TBLREQUEST 의 각 키가 변경이 되면 FOREIGN KEY 로 연결되어있는 모든 것에 대하여
단계별로 변경사항을 적용시킨다.
많은 외부키 참조가 되어있는 경우 참조 수 만큼 행해줘야 했던 처리를
원 자료에 대해 적용하면 자동으로 처리가 된다. 좋다.

NO ACTION 은 아무 일도 하지 말라는 것이다.
이렇게 하면 참조된 자료를 다 삭제하기 전에는 제약조건에 의해 삭제가 불가능 해진다.

'Windows > Database' 카테고리의 다른 글

[SQL] 테이블간 자료 이동간 데이터 명시  (0) 2007.06.01
[SQL] UNION  (0) 2007.05.19
TEdit 에서 확인된 내용이다.
OnKeyPress 의 Key 값에서 숫자키와 KeyPad 의 숫자와 같은 '숫자 값' 이 전달이 된다.
이걸 믿고 코딩을 했다가 며칠을 헤맸다.

OnKeyUp 의 Key 값. 즉, Virtual Key 값은 다른 것이다.
KeyUp 이벤트에서 if 문으로 int 값으로 범위를 정해 처리를 하게 하였더니
KeyPad 의 숫자키로는 처리가 안된다.
결국 다음 코드로 키 값이 다른걸 알고 처리하였다.

void __fastcall TForm1::Edit1KeyUp( TObject *Sender, TShiftState &State, WORD &Key )
{
    Memo1->Lines->Add( IntToStr( Key ) );
}

시작시 : 값을 불러온다.
동작
종료시 : 값을 저장한다.

완벽해 보이나 시작시 값을 불러오기 직전 종료가 발생하면 빈 값이 저장된다.
SQL 참조에서도 같은 상황이 발생했다.
주의하자.


'Windows > 문제해결' 카테고리의 다른 글

[RC Error] Invalid bitmap format  (0) 2009.08.13
[RAD] Process 종료 메세지  (0) 2008.04.03
[WIN32] SetWindowLong 이용시 객체 접근  (0) 2007.06.04
[CB] 주석문 \ 에러  (0) 2007.05.25
[C++] 매크로 ##  (0) 2007.05.04
#define RegistMoneyEdit( EDT ) \
    SetWindowLong( EDT->Handle, GWL_STYLE, GetWindowLong( EDT->Handle, GWL_STYLE ) | ES_RIGHT );

TEdit 컨트롤의 텍스트를 우측 정렬하는 코드이다.
RegistMoneyEdit( Edit1 );
으로 사용한다.

이때, 다른 폼의 에디트 컨트롤을 우측 정렬하기 위해
RegistMoneyEdit( Form2->Edit1 );
으로 사용을 하였다.
이때, Access Violation 에러가 났다.

다른 방식으로 접근이 가능 할지 모르겠지만,
일단 시간상 해당 폼에서 처리하였다.

'Windows > 문제해결' 카테고리의 다른 글

[RAD] Process 종료 메세지  (0) 2008.04.03
[INI] 값 저장/참조에 있어 주의점  (0) 2007.06.04
[CB] 주석문 \ 에러  (0) 2007.05.25
[C++] 매크로 ##  (0) 2007.05.04
[SQL] View 의 유용성  (0) 2007.04.27

MakeObjectInstance -> Classes.MakeObjectInstance
FreeObjectInstance -> Classes.FreeObjectInstance

+ Recent posts