AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CheckBox auswerten

Ein Thema von manfred_h · begonnen am 1. Feb 2007 · letzter Beitrag vom 1. Feb 2007
Antwort Antwort
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#1

CheckBox auswerten

  Alt 1. Feb 2007, 15:05
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: CheckBox auswerten

  Alt 1. Feb 2007, 15:08
1. Besser if G_CheckBox_church then ... 2. Mach den Abstand Teil der Strings innerhalb der Variablen:
CM := 'CM ';
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: CheckBox auswerten

  Alt 1. Feb 2007, 15:11
Zitat von mkinzler:
1. Besser 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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: CheckBox auswerten

  Alt 1. Feb 2007, 15:14
Zitat von Luckie:
Zitat von mkinzler:
1. Besser 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.
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: CheckBox auswerten

  Alt 1. Feb 2007, 15:19
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von yörsch
yörsch

Registriert seit: 10. Jan 2007
Ort: Lampertheim
206 Beiträge
 
Delphi XE2 Architect
 
#6

Re: CheckBox auswerten

  Alt 1. Feb 2007, 15:22
HAI manfred_h besteht dein Problem noch?
Jörg
have FUN
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#7

Re: CheckBox auswerten

  Alt 1. Feb 2007, 15:36
Hi zusammen

Ihr seid ja super schnell mit Antworten da wir einem ja

Werde es gleich ausproieren.
Danke
Manfred
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#8

Re: CheckBox auswerten

  Alt 1. Feb 2007, 15:51
Problem gelöst

habe es jetzt so gelöst.

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

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
  Mit Zitat antworten Zitat
1. Feb 2007, 22:04
Dieses Thema wurde von "Christian Seehase" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Lässt sich als Delphi-Problem einordnen
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:27 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