Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Abi-Rechner (https://www.delphipraxis.net/125950-abi-rechner.html)

DeddyH 21. Dez 2008 15:21

Re: Abi-Rechner
 
:glaskugel: Dann machst Du irgend etwas falsch, ich habe sie auch "frei Hand" in meinen Source geschrieben. Zur Not häng mal Deine Unit an, ich komplettiere sie dann.

AlexanderBrade 21. Dez 2008 15:23

Re: Abi-Rechner
 
Liste der Anhänge anzeigen (Anzahl: 1)
Alles klar!
siehe Anhang...
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Menus;

type
  TForm2 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    procedure RefreshCbCount(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);


   
  private
    { Private-Deklarationen }
    FCntCBs: Cardinal;
  public
    { Public-Deklarationen }
  end;


  const cb1 = 1;
        cb2 = 2;
        cb3 = 3;
        cb4 = 4;
        cb5 = 5;
        cb6 = 6;
var
  Form2: TForm2;
  iMenge: set of Byte;

implementation

uses Unit3, Unit1;

{$R *.dfm}
 { Tform12 }




 procedure TForm1.RefreshCBCount(Sender: TObject);
begin
  if Sender is TCheckBox then
    begin
      if TCheckBox(Sender).Checked then
        inc(FCntCBs)
      else
        dec(FCntCBs);
      if FCntCBs > 3 then
        MessageBox(Handle,'Zuviele Checkboxen gewählt','Info',MB_OK or MB_ICONINFORMATION);
    end;
end;




procedure TForm2.Button2Click(Sender: TObject);
begin
form2.Visible:=false;
form1.visible:=true;
end;

procedure TForm2.Button4Click(Sender: TObject);
begin
form3.Visible:=true;
end;



procedure TForm2.Button3Click(Sender: TObject);
begin
iMenge:= [];
 if checkbox1.Checked then
    include(iMenge, cb1);
 if checkbox2.Checked then
    include(iMenge, cb2);
 if checkbox3.Checked then
    include(iMenge, cb3);
 if checkbox4.Checked then
    include(iMenge, cb4);
 if checkbox5.Checked then
    include(iMenge, cb5);
 if checkbox6.Checked then
    include(iMenge, cb6);

    if FCntCBs > 3 then
  MessageBox(Handle,'Zuviele Checkboxen gewählt','Info',MB_OK or MB_ICONINFORMATION);

if (cb1) and (cb2) and (cb3) in iMenge then showmessage('Naturwissenschaft'); //Abfragen der Menge
if (cb4) and (cb5) and (cb6) in iMenge then showmessage('Sprache');
{if cb1 and cb2 and cb4   then form4.label2.caption:= }



end;

end.

DeddyH 21. Dez 2008 15:28

Re: Abi-Rechner
 
Ich seh schon, was fehlt. Schreib mal in der Typdeklaration des Formulars folgene Zeile vor das "private":
Delphi-Quellcode:
procedure RefreshCBCount(Sender: TObject);
Btw: Auch wenn das kompiliert wird, glaube ich, dass Du bei
Zitat:

Delphi-Quellcode:
if (cb1) and (cb2) and (cb3) in iMenge then showmessage('Naturwissenschaft');

falsche Ergebnisse bekommst.
Schreib das lieber mal so um:
Delphi-Quellcode:
if (cb1 in iMenge) and (cb2 in iMenge) and (cb3 in iMenge) then showmessage('Naturwissenschaft');

AlexanderBrade 21. Dez 2008 15:33

Re: Abi-Rechner
 
Nein, das hat nicht gefhlt, hab es nur wo anders hingeschrieben...
Aber trotzdem kann es nicht kompiliert werden, bleibt immer bei der Prozedur hängen:
Delphi-Quellcode:
procedure TForm1.RefreshCBCount(Sender: TObject);
begin
{usw}
Im Übrigen danke für den anderen Tipp!

DeddyH 21. Dez 2008 15:39

Re: Abi-Rechner
 
Das muss ja auch TForm2 heißen.

[edit] Was mir gerade auffällt: Deine Logik scheint etwas merkwürdig zu sein. Wieso müssen die Checkboxen 1 bis 3 alle aktiv sein, um als Naturwissenschaft zu gelten? Das Gleiche mit den anderen Checkboxen :gruebel: [/edit]

AlexanderBrade 21. Dez 2008 16:15

Re: Abi-Rechner
 
Ja da hast du Recht, werde ich gleich korrigieren...
Noch mal ne andere Frage[klappt jetzt]:
Wie kann ich die Captions von Panels während des Programmablaufs ändern?
Delphi-Quellcode:
form5.Panel5.caption:='EN'
Das klappt nicht!!!

DeddyH 21. Dez 2008 16:30

Re: Abi-Rechner
 
Was heißt "klappt nicht"? Compilerfehler oder Laufzeitfehler? Syntaktisch ist Dein Code in Ordnung.

AlexanderBrade 21. Dez 2008 16:34

Re: Abi-Rechner
 
ALso kleine Korrektur den vorher gegebenen Code kompiliert er, wenn ich aber so etwas schreibe:
Delphi-Quellcode:
if (cb1 in iMenge) and (cb2 in iMenge) and (cb4 in iMenge) then (form5.Panel5.caption:='EN') and (form2.panel1.caption:='1');
heißt es "Poerator ist auf diesen Operandentyp nicht anwendbar.

DeddyH 21. Dez 2008 16:38

Re: Abi-Rechner
 
So geht das ja auch nicht. Versuch es mal so (ein Grundlagentutorial zu lesen wäre vielleicht auch eine gute Idee):
Delphi-Quellcode:
if (cb1 in iMenge) and (cb2 in iMenge) and (cb4 in iMenge) then
  begin
    form5.Panel5.caption:='EN';
    form2.panel1.caption:='1';
  end;

AlexanderBrade 21. Dez 2008 16:47

Re: Abi-Rechner
 
und warum schriebt er bei folgendem inkompatible Typen?
Delphi-Quellcode:
if (cb1 in iMenge) and (cb2 in iMenge) and (cb4 in iMenge) then begin form5.Panel5.caption:='EN'; form5.panel6.caption:='FRZ'; form5.Panel7:='PHY'; end;
Sorry mein Fehler "caption" fehlt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:07 Uhr.
Seite 3 von 5     123 45      

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