System

Grafik

Oberfläche

Multimedia

Dateien

Sonstige

Special:

Guide to Game Developement(eng)

2D vs. 3D: Fight of the Century(eng)

Puzzledesign(eng)

Grundlagen der KI

Weitere Tipps zur KI

Download:
Delphi vs Visual C++

 

Oberfläche:
 

Einen Screenshot erstellen Rahmenlose Formulare bewegen
Runde Fenster erzeugen

Einen Button zur laufzeit erstellen

Ein Programm Stayontop machen Vergangene Windows-Laufzeit
Programm vor der Taskleiste verstecken Alle Fenster minimieren
Programm vor dem Taskmanager verstecken Fenster transparent machen
Mehrzeilige Labels erstellen Taskbar verstecken
Hauptform eines Programms verstecken ALT+F4 verhindern
Titelleiste des Programms verstecken
Mit der ENTER-Taste das Editfeld wechseln
Das Hintergrundbild ändern
In einem Edit-Feld nur Zahlen erlauben
Bilder in die Zwischenablage kopieren
Eigene Cursor verwenden
Strg+Alt+Entf verhindern

 

 

 

 

 

 

 


Screenschot machen und in einer Imagekomponente speichern

procedure TForm1.Button1Click(Sender: TObject);
var
  ScreenDC: hDC;
  TmpRect: TRect;
  TmpBitmap: TBitmap;
begin
  ScreenDC := GetDC(0);
  TmpBitmap := TBitmap.Create;
  TmpRect := Rect(0, 0, Screen.Width, Screen.Height);
  TmpBitmap.Width := TmpRect.Right - TmpRect.Left;
  TmpBitmap.Height := TmpRect.Bottom - TmpRect.Top;
  try
    BitBlt(TmpBitmap.Canvas.Handle, TmpRect.Left, TmpRect.Top,
           TmpBitmap.Width, TmpBitmap.Height, ScreenDC, 
           TmpRect.Left, TmpRect.Top, SRCCOPY);
    Image1.Picture.Bitmap.Assign(TmpBitmap);
  finally
    TmpBitmap.Free;
    ReleaseDC(0, ScreenDC);
  end;
end;

 

Das Hintergrundbild ändern 

procedure ChangeIt;
var
  Reg: TRegIniFile;
begin
  Reg := TRegIniFile.Create('Control Panel');
  Reg.WriteString('desktop', 'Wallpaper', 'c:\windows\forest.gif');
  Reg.WriteString('desktop', 'TileWallpaper', '1');
  Reg.Free;
  SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);
end; 

 

Mit der Enter- anstatt mit der TAB-Taste das Feld wechseln

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
Self.Perform(WM_NEXTDLGCTL, 0, 0);
Key := #0;
end;
end

 

Ein rundes Fenster erzeugen

procedure TForm1.FormCreate(Sender: TObject);
var
  HR: hRgn;
  n: array[0..3] of TPoint;
begin
  n[0] := Point(Width div 2, 1);
  n[1] := Point(1, Height div 2);
  n[2] := Point(Width div 2, Height);
  n[3] := Point(Width, Height div 2);
  HR := CreateEllipticRgn(0, 0, Width, Height);
  SetWindowRgn(Handle, HR, True);
end;

 

Das Hauptfenster verstecken

im Projektquelltext nach CreateForm

begin
  Application.Initialize;
  Application.Title := 'Projekt1';
  Application.CreateForm(TMain,Main);
  Application.ShowMainForm := False;
  Application.Run;
end;

 

Den Taskbareintrag verstecken

procedure TForm1.FormShow(Sender: TObject);
var
  Owner: hWnd;
begin
  Owner := GetWindow(Handle, GW_OWNER);
  ShowWindow(Owner, SW_HIDE);
end;

 

Ein Programm im Taskmanager (Strg+Alt+Entf) verstecken

implementation

{$R *.DFM}

function RegisterServiceProcess(dwProcessID, dwType: DWord): DWord; stdcall; 
  external 'KERNEL32.DLL' name 'RegisterServiceProcess';

procedure TForm1.Create(Sender: TObject);
begin
  RegisterServiceProcess(0, 1);
end;

 

Ein Label mit mehreren Zeilen erstellen

Label1.Caption := 'Zeile 1' + #13 + 'Zeile 2' + #13 + 'Zeile 3';

 

Die Titelleiste ausblenden

procedure TForm1.FormCreate(Sender: TObject);
begin
  SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE)
                AND NOT WS_CAPTION);
  ClientHeight := Height;
  Refresh;
end;

 

Nur Zahlen in einem Editfeld erlauben

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if NOT (Key in ['0'..'9']) then
    Key := #0;
end;

 

Einen eigenen Cursor verwenden

Screen.Cursors[1] := LoadCursorFromFile('aim.Ani');
Cursor := 1;

 

Strg+Alt+Entf / Alt+TAB / Strg+ESC verhindern

VAR
    OldValue:Longbool;
  SystemParametersInfo(97,Word(True),@OldValue,0); //STRG+ALT+ENTF deaktiviert
  SystemParametersInfo(97,Word(False),@OldValue,0); //STRG+ALT+ENTF aktiviert

 

Das Formular Stayontop machen

 with MyForm do
      SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,
        SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);

 

Mit dem folgendem Code ist es möglich auch ein Formular mit BorderStyle bsNone zu bewegen

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  Form1.perform(WM_SysCommand, $F012, 0);
end;

 

Hiermit kann man einen Button erstellen, wenn das Programm bereits gestartet wurde

Var
  MyButton  :  TButton;
MyButton := TButton.Create(Form1);
with MyButton do
  BEGIN
    Parent := Form1;
    height := 32;
    width := 128;
    caption := 'Button';
    left := 50;
    top := 50;
  END;

 

Die Zeit, die seit dem Windowsstart vergangen ist im Label1 anzeigen

Label1.caption := IntToStr(GetTickCount);

 

Alle Fenster minimieren

 function EnumWinProc(Wnd : HWND) : Boolean; Export; StdCall;
 var
   WinText : Array[0..255] of Char;
 begin
   GetWindowText(Wnd, WinText, 255);
   Result := True;
   if (StrPas(WinText) <> '') and
      IsWindowVisible(Wnd) and
      (Wnd<>Application.Handle) and
      (Wnd<>Form1.Handle)
      then
        CloseWindow(Wnd);
 end;
EnumWindows(@EnumWinProc, LongInt(Self));

 

Ein Fenster transparent darstellen

Procedure MakeWindowTransparent (Form: TForm);
Var CurrentStyle : LongInt;
Begin
  Form.Visible := False;
  CurrentStyle := GetWindowLong(Form.Handle, GWL_EXSTYLE);
  SetWindowLong(Form.Handle, GWL_EXSTYLE, CurrentStyle Or WS_EX_TRANSPARENT);
  Form.Visible := True;
End;

 

Taskbar verstecken

procedure SysHideTaskbar;
var wndHandle : THandle;
begin
    wndHandle := FindWindow(Pchar('Shell_TrayWnd'), nil);
    ShowWindow(wndHandle, SW_HIDE);
end;

Taskbar zeigen

procedure SysShowTaskbar;
var wndHandle : THandle;
begin
    wndHandle := FindWindow('Shell_TrayWnd', nil);
    ShowWindow(wndHandle, SW_RESTORE);
end;

 

ALT+F4 vereiteln

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Canclose:=false;
end;
Hosted by www.Geocities.ws

1