TNotebook macht Schwierigkeiten
-
- Beiträge: 52
- Registriert: So 1. Dez 2013, 14:15
- OS, Lazarus, FPC: Windows 7 (L 1.0.14 - FPC 2.6.0)
- CPU-Target: 64Bit
- Wohnort: Ostsee
TNotebook macht Schwierigkeiten
ich habe da mal eine Frage dem TNotebook betreffend.
Meine Hauptform ist auf einem TNotebook aufgebaut und habe auch um die 80 Seiten (möchte also nicht mehr umbauen auf z.B. TPageControl). Und man kann bekanntlich ja nur über den OI die Farbe des Hintergrundes vom TNotebook ändern. Ich möchte aber lieber ein Hintergrundbild bei jeder Page sehen. Momentan hab ich auf jeder Page (80x) das selbe Bild als TImage laden müssen (habe dann halt die Z-Reihenfolge geändert, sodass es wie ein Background Image ausschaut) und das frisst aber Speicher. Da mein Prog auf eine CD kommen soll, ist diese jetzige Lösung nicht hilfreich.
Wie ist es dann umzusetzen, dass die Pages des TNotebooks entweder alle das selbe Hintergrundbild verpasst bekommen, es aber nur einmal "geladen" wird oder das die Farbe o.ä. des TNotebooks transparent gemacht wird und ein TImage im TForm zu finden ist (also der TForm1 untergeordnet - im OI gesehen)
Wisst ihr so ziemlich, was ich gemeint habe? Ich würde mich auf eine hilfreiche Antwort sehr freuen
Gruß
Boneless
EDIT: Nach dem Suchen frag ich, ob man einer Color (Beispiel clNavy) dann einen transparenten Wert geben muss?
Code: Alles auswählen
program Boneless;
{$mode Einsteiger}{H+}
-
- Beiträge: 52
- Registriert: So 1. Dez 2013, 14:15
- OS, Lazarus, FPC: Windows 7 (L 1.0.14 - FPC 2.6.0)
- CPU-Target: 64Bit
- Wohnort: Ostsee
Re: TNotebook macht Schwierigkeiten

In der Unit Graphics gibt es proceduren und propertys namens
- SetTransparent
- GetTransparent und
- TransparentColor
Ich glaube schon, dass es etwas tiefgründiger ist, dies ganze hier. Aber ich als FPC Einsteiger.. das ist (noch) zu hoch für mich..

Code: Alles auswählen
program Boneless;
{$mode Einsteiger}{H+}
Re: TNotebook macht Schwierigkeiten
Das könntest Du so realisieren:Boneless hat geschrieben:das selbe Hintergrundbild verpasst bekommen, es aber nur einmal "geladen" wird
Code: Alles auswählen
var
Form1: TForm1;
Image: TImage;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
Image:=TImage.Create(Self);
Image.Stretch:=True;
Image.Picture.LoadFromFile('C:\01\01.jpg'); //Hier das Hintergrundbild laden
Image.Width:=NoteBook1.ClientWidth;
Image.Height:=NoteBook1.ClientHeight;
end;
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
NoteBook1.PageIndex:=NoteBook1.PageIndex + 1;
Image.Parent:=NoteBook1.Page[NoteBook1.PageIndex];
end;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 52
- Registriert: So 1. Dez 2013, 14:15
- OS, Lazarus, FPC: Windows 7 (L 1.0.14 - FPC 2.6.0)
- CPU-Target: 64Bit
- Wohnort: Ostsee
Re: TNotebook macht Schwierigkeiten
danke für deinen Denkanstoß.
Deine Prozedur beim FormCreate funktioniert auch noch. Aber beim PageWechseln haperts. Ich gebe mal den Code dazu
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
var
i:Integer;
Image:TImage;
begin
FPanelArray[0].Panel:=Page1;
FPanelArray[0].MenuItem:=MI_Page0;
FPanelArray[1].Panel:=SiebenZip;
FPanelArray[1].MenuItem:=MI_Page1;
FPanelArray[2].Panel:=Animake;
FPanelArray[2].MenuItem:=MI_Page2;
FPanelArray[3].Panel:=AutoMouse;
FPanelArray[3].MenuItem:=MI_Page3;
FPanelArray[4].Panel:=CheatEngine;
FPanelArray[4].MenuItem:=MI_Page4;
FPanelArray[5].Panel:=Craagle;
FPanelArray[5].MenuItem:=MI_Page5;
FPanelArray[6].Panel:=Cube;
FPanelArray[6].MenuItem:=MI_Page6;
FPanelArray[7].Panel:=Dll_Icon_Maker;
FPanelArray[7].MenuItem:=MI_Page7;
FPanelArray[8].Panel:=Hex_Farbmischer;
FPanelArray[8].MenuItem:=MI_Page8;
FPanelArray[9].Panel:=JavaScript_Collector;
FPanelArray[9].MenuItem:=MI_Page9;
FPanelArray[10].Panel:=Lazarus64;
FPanelArray[10].MenuItem:=MI_Page10;
for i:=0 to ANZAHL_PANELS do begin
FPanelArray[i].Panel.Visible:=False;
FPanelArray[i].Panel.Enabled:=False;
end;
Image:=TImage.Create(Self);
Image.Stretch:=True;
Image.Picture.LoadFromFile('img\bgimg.jpg'); //Hier das Hintergrundbild laden
Image.Width:=NoteBook1.ClientWidth;
Image.Height:=NoteBook1.ClientHeight;
end;
Code: Alles auswählen
procedure TForm1.ShowPanel(Sender: TObject); // OnClick Event der MenuItems
var
i: Integer;
Image: TImage;
begin
for i:=0 to ANZAHL_PANELS do
if Sender = FPanelArray[i].MenuItem then begin
FPanelArray[i].Panel.Enabled := True;
FPanelArray[i].Panel.Visible := True;
FPanelArray[i].MenuItem.Checked := True;
end else begin
FPanelArray[i].Panel.Enabled := False;
FPanelArray[i].Panel.Visible := False;
FPanelArray[i].MenuItem.Checked := False;
end;
Notebook1.PageIndex:=Notebook1.PageIndex + 1;
Image.Parent:=Notebook1.Page[Notebook1.PageIndex];
end;
Code: Alles auswählen
program Boneless;
{$mode Einsteiger}{H+}
Re: TNotebook macht Schwierigkeiten
Code: Alles auswählen
procedure TForm1.ShowPanel(Sender: TObject); // OnClick Event der MenuItems
var
i: Integer;
// Image: TImage;
begin
for i:=0 to ANZAHL_PANELS do
if Sender = FPanelArray[i].MenuItem then begin
FPanelArray[i].Panel.Enabled := True;
FPanelArray[i].Panel.Visible := True;
FPanelArray[i].MenuItem.Checked := True;}
Image.Width:=FPanelArray[i].Panel.ClientWidth;
Image.Height:=FPanelArray[i].Panel.ClientHeight;
Image.Parent:=FPanelArray[i].Panel;
end else begin
FPanelArray[i].Panel.Enabled := False;
FPanelArray[i].Panel.Visible := False;
FPanelArray[i].MenuItem.Checked := False;
end;
end;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 52
- Registriert: So 1. Dez 2013, 14:15
- OS, Lazarus, FPC: Windows 7 (L 1.0.14 - FPC 2.6.0)
- CPU-Target: 64Bit
- Wohnort: Ostsee
Re: TNotebook macht Schwierigkeiten
Code: Alles auswählen
begin
{$IFDEF CHECK_POSITION}
if CheckPosition(Self) then
DebugLn('[TControl.SetWidth] ',Name,':',ClassName,' ',dbgs(Value));
{$ENDIF}
if csLoading in ComponentState then // Hier der Fehler
begin
FReadBounds.Right := FReadBounds.Left+Value;
Include(FControlFlags, cfWidthLoaded);
end;
if [csDesigning, csDestroying, csLoading] * ComponentState = [csDesigning] then
CheckDesignBounds;
SetBounds(FLeft, FTop, Max(0, Value), FHeight);
end;
Ja jetzt klappts, aber wie kann ich die Z-Reihenfolge noch ändern?Michl hat geschrieben:Das Image müsste global oder in der Klasse TForm1 deklariert werden...
Code: Alles auswählen
program Boneless;
{$mode Einsteiger}{H+}
Re: TNotebook macht Schwierigkeiten
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 52
- Registriert: So 1. Dez 2013, 14:15
- OS, Lazarus, FPC: Windows 7 (L 1.0.14 - FPC 2.6.0)
- CPU-Target: 64Bit
- Wohnort: Ostsee
Re: TNotebook macht Schwierigkeiten

Danke man


Aber beim FormCreate sitz ich noch aufm Schlauch. Bei FormCreate wird eine Seite des TNotebooks schon angezeigt. Und da soll das Bild auch schon rein. Habs versucht.. funzt aber nich
Code: Alles auswählen
program Boneless;
{$mode Einsteiger}{H+}
Re: TNotebook macht Schwierigkeiten
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 52
- Registriert: So 1. Dez 2013, 14:15
- OS, Lazarus, FPC: Windows 7 (L 1.0.14 - FPC 2.6.0)
- CPU-Target: 64Bit
- Wohnort: Ostsee
Re: TNotebook macht Schwierigkeiten
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
var
i:Integer;
begin
Image:=TImage.Create(Self);
Image.Stretch:=True;
Image.Picture.LoadFromFile('img\bgimg.jpg'); //Hier das Hintergrundbild laden
Image.Width:=Page1.ClientWidth;
Image.Height:=Page1.ClientHeight;
Image.Parent:=Page1;
Image.SendToBack;
end;
Code: Alles auswählen
program Boneless;
{$mode Einsteiger}{H+}
Re: TNotebook macht Schwierigkeiten
[Edit]: Wahrscheinlich liegt über der Page1 noch ein Panel, müsstest also das Panel als Parent nehmen
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 52
- Registriert: So 1. Dez 2013, 14:15
- OS, Lazarus, FPC: Windows 7 (L 1.0.14 - FPC 2.6.0)
- CPU-Target: 64Bit
- Wohnort: Ostsee
Re: TNotebook macht Schwierigkeiten
Funktioniert aber nicht..Michl hat geschrieben:Wenn Page1 angezeigt wird, wenn Du das Programm startest, sollte der Code so funktionieren.

Code: Alles auswählen
program Boneless;
{$mode Einsteiger}{H+}
Re: TNotebook macht Schwierigkeiten

Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 52
- Registriert: So 1. Dez 2013, 14:15
- OS, Lazarus, FPC: Windows 7 (L 1.0.14 - FPC 2.6.0)
- CPU-Target: 64Bit
- Wohnort: Ostsee
Re: TNotebook macht Schwierigkeiten

Code: Alles auswählen
program Boneless;
{$mode Einsteiger}{H+}
Re: TNotebook macht Schwierigkeiten
Daran kann ich mich erinnern. Das ändert aber nichts daran, dass IMHO entweder Page1 nicht beim Starten angezeigt wird oder Page1 von irgendwas übermalt wird.Boneless hat geschrieben: weil ich mal statt TNotebook ein TPageControl hatte
Setz doch mal ein Objekt (TLabel, TEdit oder so) im Formular auf Page1 und schaue, ob dieses Objekt beim Starten angezeigt wird.
Ist aber schwierg zu raten, was da schiefläuft, bei der derzeitigen Informationslage.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;