Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Transparente Form und Memo (https://www.delphipraxis.net/56887-transparente-form-und-memo.html)

Nils_13 12. Nov 2005 18:53


Transparente Form und Memo
 
Hi,

ich habe eine Transparente Form, die auf alClient und bsNone steht. In dieser Form ist ein Memo. Wenn das Memo vollgeschrieben ist, seh ich nicht mehr was ich schreibe. Die Scrollbar hilft auch nciht weiter. Wie kann ich das Problem beheben ?

faux 12. Nov 2005 19:08

Re: Transparente Form und Memo
 
Die Form steht auf Align = alClient?

x000x 12. Nov 2005 19:11

Re: Transparente Form und Memo
 
Moin moin,

kann sein, das ich daneben liege, aber hast du die schriftfarbe im Memo auf eine
andere gesetzt, als die der Form?

ManuMF 12. Nov 2005 19:18

Re: Transparente Form und Memo
 
Hallo,

wie meinst du das? Ist das Memo halbtransparent oder voll zu sehen?
Mach doch mal einen Screenshot.

Gruß,
ManuMF

Nils_13 13. Nov 2005 09:35

Re: Transparente Form und Memo
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich kann keinen Screeshot machen, da es beim Screenshot nicht transparent ist --> es ist transparent.
Es soll wie es sich gehört automatisch runtergescrollt werden, aber man soll auch per Scrollbar nach oben scrollen können, um die anderen Befehle noch lesen zu können.

turboPASCAL 13. Nov 2005 09:51

Re: Transparente Form und Memo
 
Na, ich denke mal das es an deinem Programm liegt. Du wirst wohl irgend wo einen Fehler haben.
Das Programm legt den Rechner lahm ! (zumindest meinen Testrechner)

faux 13. Nov 2005 10:08

Re: Transparente Form und Memo
 
Zitat:

Zitat von turboPASCAL
Na, ich denke mal das es an deinem Programm liegt. Du wirst wohl irgend wo einen Fehler haben.
Das Programm legt den Rechner lahm ! (zumindest meinen Testrechner)

Ja, meine VM (Windows XP Pro SP2) ebenfalls. Sobald die Memo voll ist, geht die CPU auf 100%, das Programm blockier alles (auch den Taskmanager.. *gg*) und man muss die VM abdrehen... :roll:

Nils_13 13. Nov 2005 10:17

Re: Transparente Form und Memo
 
Zitat:

Zitat von turboPASCAL
Na, ich denke mal das es an deinem Programm liegt. Du wirst wohl irgend wo einen Fehler haben.
Das Programm legt den Rechner lahm ! (zumindest meinen Testrechner)

Zitat:

Zitat von faux
Zitat:

Zitat von turboPASCAL
Na, ich denke mal das es an deinem Programm liegt. Du wirst wohl irgend wo einen Fehler haben.
Das Programm legt den Rechner lahm ! (zumindest meinen Testrechner)

Ja, meine VM (Windows XP Pro SP2) ebenfalls. Sobald die Memo voll ist, geht die CPU auf 100%, das Programm blockier alles (auch den Taskmanager.. *gg*) und man muss die VM abdrehen... :roll:

Ihr seid ja lustig. Warum stell ich diese Frage wohl ? Weil sich der Computer aufhängt :wink:

faux 13. Nov 2005 10:18

Re: Transparente Form und Memo
 
HÄnge mal den Quellcode an einen Beitrag an. SOnst tappen hier alle im dunkeln... :zwinker:

Nils_13 13. Nov 2005 10:20

Re: Transparente Form und Memo
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier habt ihrs.

faux 13. Nov 2005 10:26

Re: Transparente Form und Memo
 
Also was mir auf den aller ersten Blick auffiehl:

Delphi-Quellcode:
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
Form1.Color := ColorBox1.Selected;
Form1.Visible := True;
Form1.Show;

MainForm.Visible := False;

Timer1.Enabled := False;
end;
Das kann einfach nur schief gehen... :roll:

turboPASCAL 13. Nov 2005 10:35

Re: Transparente Form und Memo
 
Jo, das meine ich auch...

Beschreibe doch mal bitte was du machen willst.

Nils_13 13. Nov 2005 10:46

Re: Transparente Form und Memo
 
Zitat:

Zitat von faux
Also was mir auf den aller ersten Blick auffiehl:

Delphi-Quellcode:
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
Form1.Color := ColorBox1.Selected;
Form1.Visible := True;
Form1.Show;

MainForm.Visible := False;

Timer1.Enabled := False;
end;
Das kann einfach nur schief gehen... :roll:

Wenn du schon sagst es geht schief, dann schreibe nicht den :roll: sondern wie du es lösen würdest :wink:

Ich will, dass das Programm transparent ist, aber das man wie in DOS einfach schreiben schreiben und nochmal schreiben kann, ohne das sich der COmputer aufhängt. --> Es solle einen grünen Schimmer haben.

turboPASCAL 13. Nov 2005 12:01

Re: Transparente Form und Memo
 
Liste der Anhänge anzeigen (Anzahl: 1)
Du brauchst dazu doch keine zwei Formen. Wozu der Timer war verstehe ich auch nicht so recht (nur um die 2. Form darzustellen ?).

Da du mit D7 arbeitest kannst du auch auf:
Delphi-Quellcode:
// Transparenz
setWindowLong(Handle, GWL_EXSTYLE,
    getWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED {or WS_EX_TRANSPARENT});
verzichten, das geht dann so:
Delphi-Quellcode:
...

uses code;

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
begin
  // Transparenz
  {Form1.} AlphaBlend := True;
  {Form1.} AlphaBlendValue := 200;

  {Form1.} Align := alClient;

  // Console
  ...

end;

...

procedure TMainForm.ConsoleKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  iLine: integer;
begin
  iLine := Console.Perform(EM_LINEFROMCHAR, -1, 0);

  if Key = VK_RETURN then
  begin
    // Memo Line(s) Auswerten ( Cascadierte If-Abfragen )
    if LowerCase(Console.Lines[iLine]) = '#exit' then
    begin
      Close;
    end else
    if LowerCase(Console.Lines[iLine]) = '#help' then
    begin
      with Console.Lines do
      begin
        Add('');
        Add('');
        Add('#help = ruft die Hilfe auf');
        Add('#exit = beendet das Programm');
        Add('#opencd = öffnet das CD-Laufwerk');
        Add('#closecd = schließt das CD-Laufwerk');
        Add('cls = Console leeren (clear)');
        Add('');
      end;
    end else
    if LowerCase(Console.Lines[iLine]) = '#opencd' then
    begin
       Console.Lines.Add('Ok.');
      mciSendString('Set cdaudio door open wait', nil, 0, Handle);
    end else
    if LowerCase(Console.Lines[iLine]) = '#closecd' then
    begin
      Console.Lines.Add('Ok.');
      mciSendString('Set cdaudio door closed wait', nil, 0, Handle);
    end else
    if LowerCase(Console.Lines[iLine]) = 'cls' then
    begin
      Console.Clear;
    end else
    if Console.Lines[iLine] <> '' then // Letzte If Abfrage
    begin
      Console.Lines.Add('Unbekannter Befehl');
      Windows.Beep(880,25);
    end;
  end;
end;

procedure TMainForm.Button1Click(Sender: TObject);
begin
  // Panicbkutton ;)
  Close;
end;
...

Nils_13 13. Nov 2005 12:58

Re: Transparente Form und Memo
 
Mit einem Wort : geil.

Danke :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz