Autor Beitrag
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 23.10.02 09:11 
Hier zwei Prozeduren mit denen man Hintergrund-Bilder ermitteln und setzen kann.

Mit GetWallpaperSystem kann man den Pfad des Hintergrungbildes ermitteln. Weiterhin kann man ermitteln ob das Bild gekachelt und/oder gesteckt ist. Die Werte werden von der Prozedur in die Var-Parameter übertragen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
uses ..., Registry;

{Ermittelt Pfad des Hintergrundbildes und die Anzeigeart}

procedure GetWallpaperSystem(var sWallpaper: Stringvar bTile, bStrech: Boolean);
begin
  with TRegIniFile.Create('Control Panel\Desktop'do try
    sWallpaper := ReadString('''Wallpaper''');
    bTile := ReadInteger('''TileWallpaper'0) = 1;
    bStrech := ReadInteger('''WallpaperStyle'0) = 2;
  finally Free end;
end{Popov}


Mit SetWallpaperSystem kann man den Pfad des Hintergrungbildes festlegen. Weiterhin kann man festlegen ob das Bild gekachelt und/oder gesteckt sein soll. Die Werte können über Variablen oder Konstanten übergeben werden.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
{Wechselt das Hintergrundbild und Anzeigeart}

procedure SetWallpaperSystem(sWallpaper : String; bTile, bStrech: Boolean);
const
 aTile: Array[Boolean] of Byte =(01);
 aStrech: Array[Boolean] of Byte =(02);
begin
  with TRegIniFile.Create('Control Panel\Desktop'do try
    WriteString('''Wallpaper', sWallpaper);
    WriteInteger('''TileWallpaper', aTile[bTile]);
    WriteInteger('''WallpaperStyle', aStrech[bStrech]);
  finally Free end;

  //Aktualisiert das Hintergrundbild
  SystemParametersInfo(SPI_SETDESKWALLPAPER, 0nil, SPIF_SENDWININICHANGE);
end{Popov}


Bitte beachten, dass es keinen Sinn macht sTile und sStrech gleichzeitig auf Treu zu setzen. Zwar sind beiden Werte unabhängig von einander, aber es wird immer nur ein Wert beachtet. bTile hat eine höhere Priorität als bStrech. Um kein Hintergrundbild anzuzeigen muß man nur ein leeren sWallpaper String übergeben.


Hier einige Beispiele wie man Hintergrundbilder setzen kann.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
      //Bild zentrieren (normale Einstellung)
  SetWallpaperSystem('c:\win98se\1stboot.bmp', false, false);

      //Bild strecken
  SetWallpaperSystem('c:\win98se\1stboot.bmp', false, true);

      //Bild kachen
  SetWallpaperSystem('c:\win98se\1stboot.bmp', true, false);

      //Bild entfernen (kein Hintergrundbild)
  SetWallpaperSystem('', false, false);


Hier ein Beispiel für ein kleines Programm mit dem man ein wenig mit dem Prozeduren experimentieren kann. Benötigt werden zwei Buttons, ein Editfeld und zwei CheckBoxen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
begin
  SetWallpaperSystem(Edit1.Text, CheckBox1.Checked, CheckBox2.Checked);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  s: String;
  c1, c2: Boolean;
begin
  GetWallpaperSystem(s, c1, c2);
  Edit1.Text := s;
  CheckBox1.Checked := c1;
  CheckBox2.Checked := c2;
end;
Ist die Frage beantwortet? Das Problem gelöst?

Dann klicke hier, um das Thema entsprechend zu markieren!