AGB  ·  Datenschutz  ·  Impressum  







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

Konstante an Procedure übergeben

Ein Thema von Helmi · begonnen am 8. Jul 2008 · letzter Beitrag vom 9. Jul 2008
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

Konstante an Procedure übergeben

  Alt 8. Jul 2008, 17:25
Hallo,

ich steh grad auf dem Schlauch (na gut - ich sitz eher auf dem Schlauch)

ich hab folgende Procedure:
Delphi-Quellcode:
procedure RadioGroup_WordWrap(RadioGroup: TRadioGroup; const Align: DWORD;
  WordWrap_Enabled: Boolean);
//Align-Werte: BS_TOP / BS_VCENTER / BS_BOTTOM / BS_LEFT / BS_RIGHT

var
  i : Integer;
  RadioButton_Style : DWORD;
  RadioButton : TRadioButton;

begin
  with RadioGroup do
    begin
      //alle Buttons abfragen
      for i := 0 to Pred(Items.Count) do
        begin
          //RadioButton auslesen
          RadioButton := Buttons[i];

          //momentaner Status des RadioButtons auslesen
          RadioButton_Style := GetWindowLong(RadioButton.Handle, GWL_STYLE);


          If WordWrap_Enabled then
            RadioButton_Style := RadioButton_Style or BS_MULTILINE or BS_CENTER
          else
            RadioButton_Style := RadioButton_Style and not BS_MULTILINE
                                  and not BS_CENTER;

          //neuer Style an RadioButton übergeben
          SetWindowLong(RadioButton.Handle, GWL_STYLE, RadioButton_Style);
        end;
      //aktualisieren
      Invalidate;
    end;
end;
Wie man sieht, ist in dem Code "BS_Center" hart hinterlegt. Dies würd ich aber
nun gerne gegen Align austauschen um von "aussen", also beim Aufruf der
Procedure, angeben was für eine Ausrichtung ich brauche, z. B.:
BS_TOP / BS_VCENTER / BS_BOTTOM / BS_LEFT / BS_RIGHT

Wenn ich aber nun folgendes schreibe:
Delphi-Quellcode:
If WordWrap_Enabled then
  RadioButton_Style := RadioButton_Style or BS_MULTILINE or Align
else
  RadioButton_Style := RadioButton_Style and not BS_MULTILINE and not Align;
dann erhalte ich vom Compiler diese Meldung:
Zitat von Compiler:
[Fehler] Unit1.pas(52): Operator ist auf diesen Operandentyp nicht anwendbar
Wie kann ich denn eine solche Konstante an eine Procedure übergeben und dann verarbeiten?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
hoika

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

Re: Konstante an Procedure übergeben

  Alt 8. Jul 2008, 17:32
Hallo,

auch RadioGroup hat ein property mit Namen Align

bei deinem

with RadioGroup do
..
Align
..

will der Compiler das Align des RadioGroups verwenden


Lösung 1:

parameter ändern von 'Align nach AAlign oder theAlign
und dann das entsprechende im or ändern.


Lösung 2:
Parameter Nie ohne Prefix verwendne (A oder the)



Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Konstante an Procedure übergeben

  Alt 8. Jul 2008, 17:38
Mist! - Du hast recht!
Danke

Ich hab total übersehen, dass RadioGroup eine Property namens Align schon
besitzt.

Jetzt trag ich schon ne Brille und seh immer noch nichts

Dank dir!
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Konstante an Procedure übergeben

  Alt 9. Jul 2008, 11:37
Meine Lösung:
Auf das #°§¬°@ WITH verzichten.
Das macht Probleme beim Lesen des Codes.
Ausserdem kann der Debugger das nicht auflösen.
Es mag zwar Fälle geben, bei denen das WITH Sinn macht, in 90% der Fälle ist es eben nur störend.
Ist halt ein Wenig mehr Tipparbeit (oder Copy-and-Paste), aber man erspart sich damit viele Probleme.
Bei meinem alten Arbeitgeber war das WITH sogar per Firmen-Styleguide *verboten*.

Noch ein Hinweis:
Niemals eigene Variablen oder Paramerter so benennen, wie Delphi-Befehle oder Methoden von Standard-Komponenten.
Nicht umsonst empfiehlt der Borland-Styleguide "fName" für KlassenVariablen und "AName" für Parameter.
Die üblichen Verdächtigen wie "Align", "Index", "Text", usw. kennt man ja.
Dies gilt übrigens auch für Felder in DB-Tabellen.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
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 20:23 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