Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Form deaktiviert sich selber (https://www.delphipraxis.net/157149-form-deaktiviert-sich-selber.html)

DelphiMini 31. Dez 2010 15:00

Form deaktiviert sich selber
 
Hallo,

ich habe malwieder ein Problem:
Ich programmiere für Jugend forscht ein Projekt(Conway's Spiel des Lebens)
und jedesmal wnn ich auf die Ausgabe (TImage) klicke,
deaktiviert sich die Form und der Befehl wird nicht ausgeführt.
Warum? Und wie behebt man das?

Vielen Dank im Voraus!
:coder:

Uwe Raabe 31. Dez 2010 15:02

AW: Form deaktiviert sich selber
 
Zeigst du uns den Code oder sollen wir raten, was du programmiert hast?

Bummi 31. Dez 2010 15:07

AW: Form deaktiviert sich selber
 
Hast Du eine Action am Form hängen und diese wird disabled, oder das Form direkt wird disabled, oder hängst Du in einer Endlosschleife.....

DelphiMini 31. Dez 2010 15:25

AW: Form deaktiviert sich selber
 
Hier ist die Prozedur!

Delphi-Quellcode:
procedure THauptformular.FeldMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var MX, MY,XX,YY : integer;
begin
 if EinfugenAn = false then
 begin
  MX := trunc(X / Kastchenbreite);
  MY := trunc(Y / Kastchenbreite);
  if Shift = [ssLeft] then
  begin
   neu[MX,MY] := not(neu[MX,MY]);
   PunktZeichnen;
   Rander;
  end;
 end;

 if EinfugenAn = true then
 begin
  MX := trunc(X / Kastchenbreite);
  MY := trunc(Y / Kastchenbreite);
  if Shift = [ssLeft] then
  begin
   for XX := 0 to FigurBreite2+1 do
   begin
    for YY := 0 to FigurHohe2+1 do
    begin
     neu[MX+XX,MY+YY] := FigurEinfugen[XX,YY];
    end;
   end;
   PunktZeichnen;
   Rander;
  end;
 end;

// EinfugenAn := false;
end;

Bummi 31. Dez 2010 15:37

AW: Form deaktiviert sich selber
 
:glaskugel: Render :glaskugel:

DelphiMini 31. Dez 2010 15:51

AW: Form deaktiviert sich selber
 
Rander!
(Eine andere Prozedure)

Bummi 31. Dez 2010 15:54

AW: Form deaktiviert sich selber
 
Sorry für den Tippfehler, aber Du hast an der Glaskugel gesehen, daß der Code nicht ausreicht den Fehler zu finden, ich vermute Du läufst irgendwo in eine Endlosschleife.....da hatte ich Rander in der Raum geworfen als möglichen Problemkandidat.

DelphiMini 31. Dez 2010 15:58

AW: Form deaktiviert sich selber
 
Danke,

ich schau mal nach!

rollstuhlfahrer 31. Dez 2010 16:38

AW: Form deaktiviert sich selber
 
Zitat:

Zitat von DelphiMini (Beitrag 1071478)
Delphi-Quellcode:
procedure THauptformular.FeldMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var MX, MY,XX,YY : integer;
begin
 if EinfugenAn = false then // Fehler 1
  // [...]
 if EinfugenAn = true then // Fehler 2
  // [...]
end;

Man vergleicht nicht auf = TRUE oder = FALSE. Entweder
Delphi-Quellcode:
if Variable then
oder
Delphi-Quellcode:
if not Variable then
. Außerdem gibt es
Delphi-Quellcode:
if [...] then [...] else
.

Weiterhin habe ich das Gefühl, dass du mal in den Projektoptionen die Bereichsprüfung aktivieren solltest:
Delphi-Quellcode:
for XX := 0 to FigurBreite2+1 do
das "+" hier ist mir sehr suspekt, auch wenn ich den Hintergrund nicht kenne.

Bernhard

BUG 31. Dez 2010 16:44

AW: Form deaktiviert sich selber
 
OT:
Zitat:

Zitat von DelphiMini (Beitrag 1071495)
Rander!
(Eine andere Prozedure)

Das klingt irgendwie nicht intuitiv und irreführend wie ein Schreibfehler bei "render" ... vielleicht findest du noch einen besseren Namen.

DelphiMini 1. Jan 2011 09:32

AW: Form deaktiviert sich selber
 
Vielleicht,

aber dann muss ich alles nochmal umändern,
das wäre mir zu aufwendig.

DelphiMini 1. Jan 2011 09:49

AW: Form deaktiviert sich selber
 
Ich habe noch was herausgefunden:

Wenn ich mein Programm zB. im Widows-98-Modus ausführe,
funktioniert es, und auch in 256 Farben.
Hat das vielleicht was mit Aero zu tun?

Sir Rufo 1. Jan 2011 11:17

AW: Form deaktiviert sich selber
 
Wenn an deinem Auto der Reifen kaputt ist, dann muss man zwar nicht das ganze Auto zur Reparatur bringen

ABER es reicht nicht, nur die Radmutter zu zeigen in der Hoffnung den Reifenschaden begutachtet zu bekommen.

Auch die Verwendung von (schlechtem) Deutsch für Variablen und Methoden

- PunktZeichnen
- Rander
- EinfugenAn

Sollte man auch besser wie folgt schreiben

- DrawPoint
- Borders
- IsInserting

Bei dieser Schreibweise fällt sofort auf, dass es sich bei DrawPoint um eine Methode handelt, Borders ein Objekt und IsInserting ein Status dreht.

Aber das ist nur Optik, hilft jedoch bei der Programmierung ungemein

Zudem gibt es bei if auch noch einen else-Zweig

Delphi-Quellcode:
if IsInserting then
  begin
    ...
  end
else
  begin
    ...
  end;

himitsu 1. Jan 2011 11:36

AW: Form deaktiviert sich selber
 
Nur um es erwähnt zu haben, aber seit Delphi 2009 kann man auch
Delphi-Quellcode:
Ränder
und
Delphi-Quellcode:
EinfügenAn
als Variablennamen verwenden :stupid:
oder mann nimmt eben das bekannte ue statt ü >
Delphi-Quellcode:
Raender
und
Delphi-Quellcode:
EinfuegenAn
.

Aber ja, irgendwie ist es schöner, wenn man alles englisch schreibt, da die Delphi-Syntax, die Delphi-CL und die WinAPI ebenfalls englisch sprechen.

Sir Rufo 1. Jan 2011 11:49

AW: Form deaktiviert sich selber
 
Zitat:

Zitat von himitsu (Beitrag 1071591)
Nur um es erwähnt zu haben, aber seit Delphi 2009 kann man auch
Delphi-Quellcode:
Ränder
und
Delphi-Quellcode:
EinfügenAn
als Variablennamen verwenden :stupid:
oder mann nimmt eben das bekannte ue statt ü >
Delphi-Quellcode:
Raender
und
Delphi-Quellcode:
EinfuegenAn
.

Aber ja, irgendwie ist es schöner, wenn man alles englisch schreibt, da die Delphi-Syntax, die Delphi-CL und die WinAPI ebenfalls englisch sprechen.

Keine Arme keine Kekse - er hat Delphi 7 ;)

rollstuhlfahrer 1. Jan 2011 13:04

AW: Form deaktiviert sich selber
 
Zitat:

Zitat von DelphiMini (Beitrag 1071570)
aber dann muss ich alles nochmal umändern, das wäre mir zu aufwändig.

tja, leider ist es aber so. Wenn man Mist gebaut hat, dann muss man den Mist eben umschreiben, dass er geht. Da geht es anderen (mir inklusive) nicht anders. Nobody's perfect.


Zitat:

Zitat von DelphiMini (Beitrag 1071572)
Wenn ich mein Programm zB. im Widows-98-Modus ausführe, funktioniert es, und auch in 256 Farben. Hat das vielleicht was mit Aero zu tun?

Da du höchstwahrscheinlich am Zeichnen bist, dürfte das wenig mit Aero zu tun haben. Leider kann man dir das nicht sagen, da du uns nicht informierst, wo dein Problem ist (Code). Scheinbar handelt es sich um ein Logik-Problem. Logik-Probleme werden von der Syntax-Prüfung deines Delphis nicht gefunden, deshalb sind sie auch nicht gleich auf den ersten Blick ersichtlich. Ich hoffe aber mal, dass du die bereits gegebenen Tipps umgesetzt hast. Dann kannst du den Fehler auch einfacher finden.

Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 Uhr.

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