German Sub für Gradient Color Auswahl

Paulsche

Well-Known Member
Licensed User
Longtime User
Hi,
ich habe ein Sub "Farbauswahl" erstellt, ein Panel mit Layout, 2 Buttons für
Farbe1 + Farbe2 wo man jeweils die Farbe mit ColorDialog auswählt, und ein Imageview für Vorschau
des Farbverlaufes.

Das Sub soll für alle Farbeinstellungen nutzbar sein ,also Button, Canvas Rec usw.

Mein Problem ist nun , wie kann ich die Variablen die die Farbwerte in der Sub erhalten, zurückgeben um sie den richtigen Variablen des zu ändernden Objektes zuzuweisen ?

Z.B. habe ich die Variablen "Farbe_Trendgrafik(2)" für die Farbwerte der Trendgrafik.
Die Variablen kann ich ja in der Sub "Farbauswahl" nicht benutzen, da die Sub auch für andere Objekte gelten soll.

Hoffe es versteht jemand was ich meine :eek:

**Schade dass es kein ColorgradientDialog gibt , das wäre optimal gewesen :)
 
Last edited:

Paulsche

Well-Known Member
Licensed User
Longtime User
Hi klaus,

wie würde das denn aussehen, kannst du mir evtl. ein ganz kleines Beispiel zeigen
um mir das zu verdeutlichen ? Wäre super.

Ich sehe die Schwierigkeit der Variablenrückgabe darin, dass der Farbwert ja in
der Sub button_click einer Variablen zugewiesen wird, kann ich von der Sub eine
variable zurückgeben ?

Hab bisher nie mit Variablenübergabe an Subs gearbeitet.
 

klaus

Expert
Licensed User
Longtime User
Wie sieht Deine Farbauswahl Routine aus ?
Könntest Du ein kleines Projekt posten dann kann Ich versuchen die Rückgabe reinzubauen.
Je nachdem wie die Farbauswahl Routine ausgelegt ist könnte Ich mir vorstellen dass man die zu ändernde View direkt übrgibt und deren Farben in der Farbauswahl Routine ändert.

Beste Grüsse.
 

corwin42

Expert
Licensed User
Longtime User
Ist ganz einfach:

B4X:
Sub Process_Globals
   Type MeineFarben (Farbe1 As Int, Farbe2 As Int, Farbe3 As Int)
End Sub

Sub Activity_Create(FirstTime As Boolean)
   
   Dim Farben As MeineFarben
   
   Farbenzuweisen(Farben)
   
   Log(Farben.Farbe1)
   Log(Farben.Farbe2)
   Log(Farben.Farbe3)
      
End Sub

Sub Farbenzuweisen(parameter As MeineFarben)
   parameter.Farbe1 = 1
   parameter.Farbe2 = 2
   parameter.Farbe3 = 3
End Sub

Ich habs nicht übersetzt, sollte aber so laufen.

Eine Type-Variable wird als Referenz übergeben. D.h., wenn ich Werte darin ändere, werden sie in der aufrufenden Funktion geändert.
 

Paulsche

Well-Known Member
Licensed User
Longtime User
Hi Klaus,

hoffe du kannst damit was anfangen:

B4X:
Sub LBL02Trend_LongClick
   farbauswahl
   Farbe_Trendgrafik(0)   = Var17Farbe(0)
   Farbe_Trendgrafik(1)   = Var17Farbe(1)
End Sub


Sub farbauswahl
   pnl02Zaehlerstaende.Enabled = False
   pnl17Farbauswahl.Visible   = True
   pnl17Farbauswahl.BringToFront
End Sub


Sub BTN17Farbe0_Click
   ret = ColorDialog.Show("Farbe 1 für Verlauf wählen","OK","Abbruch","",Null)
   If ret = -3 Then Return
   BTN17Farbe0.Color   = ColorDialog.RGB
   Var17Farbe(0)      = ColorDialog.RGB
End Sub


Sub BTN17farbe1_Click
   ret = ColorDialog.Show("Farbe 2 für Verlauf wählen","OK","Abbruch","",Null)
   If ret = -3 Then Return
   BTN17farbe1.Color   = ColorDialog.RGB
   Var17Farbe(1)      = ColorDialog.RGB
End Sub


Sub BTN17uebernehmen_Click
   pnl02Zaehlerstaende.Enabled = True
   pnl17Farbauswahl.Visible   = False
End Sub
 

Attachments

  • panel.jpg
    panel.jpg
    43.7 KB · Views: 217

klaus

Expert
Licensed User
Longtime User
Was Du gemacht hast ist richtig. Eine Type Variable würde nichts zusätzliches bringen.
Mit den zwei Prozess Global Variablen Var17Farbe(0) und Var17Farbe(1) kannst Du ja die zwei Farben an die anderen Variablen übergeben.

Beste Grüsse.

 

Paulsche

Well-Known Member
Licensed User
Longtime User
ok Klaus, wie es aussieht ist wohl das Problem, dass

hier
B4X:
Sub LBL02Trend_LongClick
    farbauswahl
    Farbe_Trendgrafik(0)    = Var17Farbe(0)
    Farbe_Trendgrafik(1)    = Var17Farbe(1)
End Sub
der Code gleich weiterläuft bis zur Farbübergabe an die Variablen,
bevor in dem Label die Farbe ausgewählt wird,
die Sub "Farbauswahl" läuft einfach durch.

** Hab dafür aber momentan keine Lösung :-(
 
Last edited:
Top