최만기 님이 쓰신 글 :
: 생초보다 보니..처음에 계획했던거에서 점점 할수있는거로 낮춰서 코딩을 하고 있습니다..
:
: 검색능력이 부족해서 그런지 찾을수 있을꺼 같은데..결국 못찾네요...(작업중인 코딩파일 첨부하였습니다....)
:
: 1. 변수 질문(전역변수? / 지역변수?)
안녕하세요 최민기님.
전역변수와 지역변수는 상대적인 개념입니다.
Delphi는 선언되는 변수의 위치에 따라 가시성을 지정할 수 있습니다.
예를 들어 함수 내부에서 변수를 선언하였다면 함수를 벗어 나면 해당 변수에 접근 할 수 없습니다.
procedure DoSomething;
var
LVal: String;
begin
LVal := 'Delphi!!';
end;
LVal는 DoSomething 이라는 메소드 지역에서만 유효하며 외부에서는 사용 할 수 없습니다.
procedure DoSomething;
var
LVal: String;
function DoSub: String;
var
LSub: String;
begin
LSub := LVal + ' ' + 'C++Builder';
Result := LSub;
end;
begin
LVal := LSub;
WriteLn(DoSub); // "Delphi C++Builder" 가 출력된다.
end;
LSub 는 DoSub 지역안에서만 유효합니다.
반면 LVal은 DoSomething 지역 안에서 유효합니다. DoSub도 DoSomething지역에 포함됩니다.
따라서 DoSub 안에서 LVal 에 접근 할 수 있습니다. 하지만 DoSomething 에서 DoSub의 지역에 있는 LVal에는 접근 할 수 없습니다.
이런 개념은 Unit.pas에서도 유효한데 표현 방법이 차이가 있습니다.
Unit내부에서 지역의 범위를 설정하는데 사용되는 키워드는 "interface" 와 implementation 입니다.
unit Unit18;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
type
TForm18 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form18: TForm18; // uses 에 Unit18을 선언하면 Form18에 접근 할 수 있습니다.
implementation
{$R *.dfm}
// 이 후 선언하는 변수는 Unit18안에서만 사용하는 지역 변수 입니다.
var
LocalUnit18: String;
procedure doSomething;
begin
LocalUnit18 := 'BorlandForum'; // 하지만 doSomething 입장에서는 Unit18안에 선언되어 있는 전역 변수지요 :)
end;
end.
doSomething 입장에서는 LocalUnit18 은 전역변수 입니다.
unit Unit19;
interface
uses
Unit18, // 다른 유닛을 호출 하였습니다.
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
type
TForm19 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form19: TForm19;
implementation
{$R *.dfm}
procedure DoJob;
begin
Unit18.Form18 // 이렇게 호출이 가능합니다. Form18은 Unit18의 Inteface영역에 선언된 전역변수 이기 때문입니다.
// Unit18.LocalUnit18 // 이아이는 불러 사용할 수 없습니다. Unit18의 지역변수 이기 때문에 가시성의 제한을 받기 때문입니다.
end;
end.
: 1~13의 라디오 버튼이 있습니다. 그중에서 하나선택(값1 저장)
:
: 2-1 /2-2 둘중에 하나선택(값2 저장)
질문의 의도를 모르겠네요 :)
:
: 구현을 못하겠습니다..ㅠ 자세히 알려주시면 감사하겠습니다..
:
: 2.동적으로 폼생성 질문
:
: 폼2개를 만들어서 연결을 시켰는데, 정적폼이 아닌 동적폼으로 하래서 검색을 해서 동적폼을 만들었습니다.
:
: 폼1에서 폼2로 동적으로 잘 넘어갑니다.
:
: 하지만 폼2에서 폼1로 다시 돌아올시 멈춰버립니다.
:
: 검색한 자료대로 수정해서 했는데, 뭐가 문제가 있는지 못찾겠습니다..ㅠㅠ
:
: +Available Form으로 폼2를 넘겨서 동적폼생성작업을 했는데, 만약 폼2를 수정할시에는
:
: 어떻게 수정해야하는지도 알려주시면 정말로 감사하겠습니다.ㅠ_ㅠ
폼 수정에 관한 코드는 Form2에서 만드세요.
이를 설명하기에는 많은 시간이 필요합니다. 일단 도서나 자료집을 보시기를 권해 드립니다.
볼포 강좌/문서에 델파이 4 모든것 이라는 책 이나 델마당 동영상 강좌도 좋습니다. :)