Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   CheckBox auswerten (https://www.delphipraxis.net/85564-checkbox-auswerten.html)

manfred_h 1. Feb 2007 15:05


CheckBox auswerten
 
Hallo zusammen

habe hier folgendes:

auf einem Form sind mehrere Checkboxen die ausgewertet werden und in ein
Datenbankfeld eingetragen werden. Das sieht dann so aus:

Delphi-Quellcode:
procedure Tfrm_member.insert_chairmen;
var
  CM, SCH, HM, MBP, H, NH, SS, PS, D: string;
  A_SCH, A_HM, A_AH, A_NH, A_PS, A_DOC :string;
begin
  if G_CheckBox_church.Checked   then CM := 'CM';
  if G_CheckBox_school.Checked   then SCH := 'SCH';
  if G_CheckBox_hotel.Checked    then HM := 'HM';
  if G_CheckBox_hospital.Checked then H  := 'H';
  if G_CheckBox_mbp.Checked      then MBP := 'MBP';
  if G_CheckBox_nursinh.Checked  then NH := 'NH';
  if G_CheckBox_bibel.Checked    then SS := 'SS';
  if G_CheckBox_ps.Checked       then PS := 'PS';
  if G_CheckBox_donors.Checked   then D  := 'D';
  if A_CheckBox_school.Checked   then A_SCH := 'A_SCH';
  if A_CheckBox_hotel.Checked    then A_HM := 'A_HM';
  if A_CheckBox_hospital.Checked then A_AH := 'A_H';
  if A_CheckBox_nursinh.Checked  then A_NH := 'A_NH';
  if A_CheckBox_ps.Checked       then A_PS := 'A_PS';
  if A_CheckBox_Doctor.Checked   then A_DOC := 'A_DOC';
  with DM_member.Member do
  begin
    Edit;
    FieldByName('CHAIRMEN_G').AsString := ( CM +' '+ SCH +' '+ HM +' '+ MBP +' '+ H +' '+ NH +' '+ SS +' '+ PS +' '+ D +' ');
    FieldByName('CHAIRMEN_A').AsString := ( A_SCH +' '+ A_HM +' '+ A_AH +' '+ A_NH +' '+ A_PS +' '+ A_DOC +' ');
  end;
end;
Das Problem ist hier das es einen Schönheitsfehler hat das wenn ich nur 2 Checkboxen angewählt habe
z.B. G_CheckBox_church.Checked & if G_CheckBox_ps.Checked dann sieht das Ergebnis so aus.
CM PS
Der Abständ sollten eigentlich nur 1x verhandn sein.
Wie könnte ich das lösen?

Shalom
Manfred

mkinzler 1. Feb 2007 15:08

Re: CheckBox auswerten
 
1. Besser
Delphi-Quellcode:
if G_CheckBox_church then ...
2. Mach den Abstand Teil der Strings innerhalb der Variablen:
Delphi-Quellcode:
CM := 'CM ';

Luckie 1. Feb 2007 15:11

Re: CheckBox auswerten
 
Zitat:

Zitat von mkinzler
1. Besser
Delphi-Quellcode:
if G_CheckBox_church then ...

Was ist daran besser? Dass es nicht kompiliert? Woher weiß die Objektreferenz, ob die Eigenschaft Checked True oder False ist?

mkinzler 1. Feb 2007 15:14

Re: CheckBox auswerten
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von mkinzler
1. Besser
Delphi-Quellcode:
if G_CheckBox_church then ...

Was ist daran besser? Dass es nicht kompiliert? Woher weiß die Objektreferenz, ob die Eigenschaft Checked True oder False ist?

Sorry hab mich verguckt. :oops:

hoika 1. Feb 2007 15:19

Re: CheckBox auswerten
 
Hallo,

die vielen Variablen sind doch eh unnötig.

Delphi-Quellcode:
var
  sChairMen_G: String;
begin
  sChairMen_G:= ''; // jaja, is unnötig ;)

  if G_CheckBox_church.Checked then
  begin
    if sChairMen_G<>'' then sChairMen_G:= sChairMen_G+' ';
    sChairMen_G:= sChairMen_G+'CM';
  end;

  if G_CheckBox_school.Checked then
  begin
    if sChairMen_G<>'' then sChairMen_G:= sChairMen_G+' ';
    sChairMen_G:= sChairMen_G+'SCH';
  end;
end;
Das Leerzeichen wird nur dann angehangen,
wenn im String schon was drinsteht.

Das if sChairMen_G='' then sChairMen_G:= sChairMen_G+' ';
könnte man auhc noch über eine Extra-Methode kapseln,
aber es geht hier erst mal ums Prinzip.

Davon abgesehen, ist es keine gute Idee,
zusammengesetzte Strings in die DB zu übergeben.

Ich würde eine Detailtabelle Chairman machen,
wo jeder Bereich (church, school) ein Record ist.



Heiko

yörsch 1. Feb 2007 15:22

Re: CheckBox auswerten
 
HAI manfred_h besteht dein Problem noch? :coder:

manfred_h 1. Feb 2007 15:36

Re: CheckBox auswerten
 
Hi zusammen

Ihr seid ja super schnell mit Antworten da wir einem ja :pale:

Werde es gleich ausproieren.
Danke
Manfred

manfred_h 1. Feb 2007 15:51

Re: CheckBox auswerten
 
Problem gelöst :thumb:

habe es jetzt so gelöst.

Delphi-Quellcode:
CM := 'CM ';
Ist eigentlich ganz einfach wenn man das Ergebniss dann sieht.

Zitat:

Zitat von Heiko:
Davon abgesehen, ist es keine gute Idee,
zusammengesetzte Strings in die DB zu übergeben.

Ich würde eine Detailtabelle Chairman machen,
wo jeder Bereich (church, school) ein Record ist.

Du hast sicherlich recht habe das sonnst auch im meiner Anwendung überall
so gelöst. Nur bei dieser Sparte war das am Anfang nicht absehbar und im Moment
lass ich es mal so. Aber Danke für Deinen Tipp

Shalom
Manfred

DP-Maintenance 1. Feb 2007 22:04

DP-Maintenance
 
Dieses Thema wurde von "Christian Seehase" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Lässt sich als Delphi-Problem einordnen


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