Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Caption ändern mit OnMouseDown (https://www.delphipraxis.net/184026-caption-aendern-mit-onmousedown.html)

saii 20. Feb 2015 09:48

Caption ändern mit OnMouseDown
 
Ich möchte die Caption eines Panels mit einem Rechtsklick ändern, aber Ich weiß nicht, warum mein Versuch fehlschlägt.
procedure TForm1.P_0_0MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var s:string; c:char;
begin

s:=P_0_0.Caption;
c:=s[1];
if Button=mbRight then
begin

case c of
'_' : c:='F';
'F' : c:='?';
'?' : c:='_';
end;

end;
P_0_0.Caption:=c;

end;
Bitte nicht zu kompliziert. Bin auf Schulniveau :)
Und entschuldugt bitte, falls mein Beitrag im falschen Thema ist. Bin neu hier.

Zoot 20. Feb 2015 09:59

AW: Caption ändern mit OnMouseDown
 
Und was geht nicht?

DeddyH 20. Feb 2015 10:10

AW: Caption ändern mit OnMouseDown
 
Bei mir funktioniert das. Ist der EventHandler auch dem Ereignis zugewiesen (Objektinspektor)?

BadenPower 20. Feb 2015 10:14

AW: Caption ändern mit OnMouseDown
 
Funktioniert aber nur, wenn das 1. Zeiche von P_0_0.Caption ein 'F', '_' oder '?' ist.

Wenn das 1. Zeichen auch etwas anderes sein konnte, dann so:

Delphi-Quellcode:
procedure TForm1.P_0_0MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
   s: string;
   c: char;
begin
  s := P_0_0.Caption;
  c := s[1];
  if (Button = mbRight) then
   begin
    case c of
      '_': c := 'F';
      'F': c := '?';
      '?': c := '_';
      else c := '_';  // <- hinzufügen
    end;
   end;
  P_0_0.Caption := c;
end;

baumina 20. Feb 2015 10:15

AW: Caption ändern mit OnMouseDown
 
Interessant wäre welche Caption das Panel ganz zu Anfang hat. Wenn das erste Zeichen kein _, F oder ? ist, dann klappt das nicht. Ansonsten müssts klappen.

DeddyH 20. Feb 2015 10:23

AW: Caption ändern mit OnMouseDown
 
Also wenn schon, dann IMO eher so:
Delphi-Quellcode:
procedure TForm1.P_0_0MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
   s: string;
   c: char;
begin
  s := P_0_0.Caption;
  //Standard bei Leerstring setzen
  if s <> '' then
    c := s[1]
  else
    c := '_';
  if (Button = mbRight) then
   begin
    case c of
      '_': c := 'F';
      'F': c := '?';
      else c := '_';
    end;
   end;
  P_0_0.Caption := c;
end;

BadenPower 20. Feb 2015 10:32

AW: Caption ändern mit OnMouseDown
 
Zitat:

Zitat von DeddyH (Beitrag 1290713)
Also wenn schon, dann IMO eher so:

Spielverderber.


Ich wollte doch nur auf die nächste Frage warten, die dann gelautet hätte:

"Ich bekomme eine Zugriffverletzung" in der Zeile:
Delphi-Quellcode:
c := s[1];

DeddyH 20. Feb 2015 10:36

AW: Caption ändern mit OnMouseDown
 
Man muss die Threads ja nicht künstlich in die Länge ziehen, es gibt schon genug, wo seitenweise über Kleinigkeiten diskutiert wird.

BadenPower 20. Feb 2015 10:44

AW: Caption ändern mit OnMouseDown
 
Zitat:

Zitat von DeddyH (Beitrag 1290717)
Man muss die Threads ja nicht künstlich in die Länge ziehen, es gibt schon genug, wo seitenweise über Kleinigkeiten diskutiert wird.

Da hast Du allerdings recht.


Aber der Lerneffekt für "Greife nie auf Dinge zu, die eventuell nicht da sind." wäre größer gewesen.

Jetzt hat er eine Lösung und weiss warscheinlich gar nicht, wo ohne die If-Abfrage das Problem gewesen wäre.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:52 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