AGB  ·  Datenschutz  ·  Impressum  







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

Komponente: noch grün hinter den Ohren

Ein Thema von SvenLittkowski · begonnen am 10. Feb 2011 · letzter Beitrag vom 14. Feb 2011
Antwort Antwort
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#1

AW: Komponente: noch grün hinter den Ohren

  Alt 10. Feb 2011, 07:45
Farbe 1,2 und Percentage mit Getter und Setter versehen, Farbe 3 nur mit Getter.
Timer benötigst Du keinen.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Komponente: noch grün hinter den Ohren

  Alt 10. Feb 2011, 07:49
Und in den Settern baust du dann jeweils noch die Aktualisierung von Farbe 3 ein, das sollte glaub ich das sein, was du mit Realtime meinst?
Ralph
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#3

AW: Komponente: noch grün hinter den Ohren

  Alt 10. Feb 2011, 07:58
"Color3" als Getter = "FColor3"?
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.493 Beiträge
 
Delphi 12 Athens
 
#4

AW: Komponente: noch grün hinter den Ohren

  Alt 10. Feb 2011, 08:37
Delphi-Quellcode:
     property Color1_Original: TColor read FColor1_Original default clBlack;
21. property Color2_Added: TColor read FColor2_Added default clWhite;
22. property MixStrengthPercentage: Byte read FMixStrengthPercentage;
Die Property sind nur im Objektinspektor sichtbar, wenn diese auch published sind.
Der Setter fehlt natürlich auch.
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#5

AW: Komponente: noch grün hinter den Ohren

  Alt 10. Feb 2011, 14:49
Hier der inzwischen veränderte Code.

Code:
unit ColorMixer;

interface

  uses
    SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
    Forms, Dialogs, StdCtrls;

  type
    TColorMixer=class(TComponent)
    private
      FColor1_Original:      TColor;
      FColor2_Added:         TColor;
      FMixStrengthPercentage: Byte;
      FColor3_Result:        TColor;
      SetColor3_Result:      TColor;
    protected
      function Colorize(Sender: TObject; ColorOriginal, ColorAdded: TColor; PercentageStrength: Byte): TColor;
    public
      constructor Create( AOwner: TComponent); override;
    published
      property Color1_Original:      TColor read   FColor1_Original      write SetColor1_Original       default clBlack;
      property Color2_Added:         TColor read   FColor2_Added         write SetColor2_Added          default clWhite;
      property MixStrengthPercentage: Byte  read   FMixStrengthPercentage write SetFMixStrengthPercentage default 50;
      property Color3_Result:        TColor read   FColor3_Result        default clGray ;
    end;

  procedure Register;

implementation

  constructor TColorMixer.Create(AOwner: TComponent);
  begin
   inherited Create(AOwner);    
  end;

  function TColorMixer.Colorize(Sender: TObject; ColorOriginal, ColorAdded: TColor; PercentageStrength: Byte): TColor;
  var
   Color1, Color2:                        LongInt;
   ValueR, ValueG, ValueB, Value1, Value2: Byte;
  begin
   PercentageStrength:=Round(2.55*PercentageStrength);
   Color1:=ColorToRGB(ColorOriginal);
   Color2:=ColorToRGB(ColorAdded);
   Value1:=Byte(Color1);
   Value2:=Byte(Color2);
   ValueR:=PercentageStrength*(Value1-Value2) shr 8+Value2;
   Value1:=Byte(Color1 shr 8);
   Value2:=Byte(Color2 shr 8);
   ValueG:=PercentageStrength*(Value1-Value2) shr 8+Value2;
   Value1:=Byte(Color1 shr 16);
   Value2:=Byte(Color2 shr 16);
   ValueB:=PercentageStrength*(Value1-Value2) shr 8+Value2;
   Result:=(ValueB shl 16)+(ValueG shl 8)+ValueR;
  end;

  procedure Register;
  begin
   RegisterComponents('Sven Littkowski`s Best',[TColorMixer]);
  end;

end.
Zitat von MyDelphi 7:
[Error] ColorMixer.pas(22): Field or method identifier expected
[Error] ColorMixer.pas(23): Field or method identifier expected
[Error] ColorMixer.pas(24): Field or method identifier expected
[Hint] ColorMixer.pas(16): Private symbol 'SetColor3_Result' declared but never used
[Fatal Error] dclusr.dpk(176): Could not compile used unit '..\Projects\Sven\Unit ColorMixer\ColorMixer.pas'

Geändert von SvenLittkowski (10. Feb 2011 um 14:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Komponente: noch grün hinter den Ohren

  Alt 10. Feb 2011, 15:01
property Color1_Original: TColor read FColor1_Original write SetColor1_Original default clBlack;
property Color2_Added: TColor read FColor2_Added write SetColor2_Added default clWhite;
property MixStrengthPercentage: Byte read FMixStrengthPercentage write SetFMixStrengthPercentage default 50;



Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.558 Beiträge
 
Delphi 12 Athens
 
#7

AW: Komponente: noch grün hinter den Ohren

  Alt 10. Feb 2011, 15:04
22 bis 24: Wenn du schon eine Settermethode angeben willst, dann solltest du diese auch implementieren.
"Field or method identifier expected" = "Feld/Variable oder Methode/Prozedur erwartet" ... bei dir wurde aber was Unbekanntes/Nichtdeklariertes (nicht) gefunden

16: Dieses Feld wurde deklariert, aber du hast es nirgendwo verwendet.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (10. Feb 2011 um 15:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#8

AW: Komponente: noch grün hinter den Ohren

  Alt 10. Feb 2011, 15:49
Schau Dir einmal SHIFT-CTRL-C an (allerdings abhängig von Deiner Delphi-Edition/Version).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#9

AW: Komponente: noch grün hinter den Ohren

  Alt 10. Feb 2011, 16:48
Vielen Dank für alle bisherigen Antworten, Ihr alle habt mir wesentlich weitergeholfen. Hier der Code, wie er jetzt ist:

unit ColorMixer;

Code:
interface

  uses
    SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
    Forms, Dialogs, StdCtrls;

  type
    TColorMixer=class(TComponent)
    private
      FColor1_Original:         TColor;
      FColor2_Added:            TColor;
      FMixStrengthPercentage:   Byte;
      FColor3_Result:           TColor;
      SetColor1_Original:       TColor;
      SetColor2_Added:          TColor;
      SetFMixStrengthPercentage: Byte;
    protected
      function Colorize(Sender: TObject; ColorOriginal, ColorAdded: TColor; PercentageStrength: Byte): TColor;
    public
      constructor Create( AOwner: TComponent); override;
    published
      property Color1_Original:      TColor read   FColor1_Original      write SetColor1_Original       default clBlack;
      property Color2_Added:         TColor read   FColor2_Added         write SetColor2_Added          default clWhite;
      property MixStrengthPercentage: Byte  read   FMixStrengthPercentage write SetFMixStrengthPercentage default 50;
      property Color3_Result:        TColor read   FColor3_Result        default clGray ;
    end;

  procedure Register;

implementation

  constructor TColorMixer.Create(AOwner: TComponent);
  begin
   inherited Create(AOwner);    
  end;

  function TColorMixer.Colorize(Sender: TObject; ColorOriginal, ColorAdded: TColor; PercentageStrength: Byte): TColor;
  var
   Color1, Color2:                        LongInt;
   ValueR, ValueG, ValueB, Value1, Value2: Byte;
  begin
   PercentageStrength:=Round(2.55*PercentageStrength);
   Color1:=ColorToRGB(ColorOriginal);
   Color2:=ColorToRGB(ColorAdded);
   Value1:=Byte(Color1);
   Value2:=Byte(Color2);
   ValueR:=PercentageStrength*(Value1-Value2) shr 8+Value2;
   Value1:=Byte(Color1 shr 8);
   Value2:=Byte(Color2 shr 8);
   ValueG:=PercentageStrength*(Value1-Value2) shr 8+Value2;
   Value1:=Byte(Color1 shr 16);
   Value2:=Byte(Color2 shr 16);
   ValueB:=PercentageStrength*(Value1-Value2) shr 8+Value2;
   Result:=(ValueB shl 16)+(ValueG shl 8)+ValueR;
  end;

  procedure Register;
  begin
   RegisterComponents('Sven Littkowski`s Best',[TColorMixer]);
  end;

end.
Die Komponente läßt sich jetzt zwar kompilieren, aber es sind nach Einfügen auf einem Formular nur die zwei zu mischenden Farbfelder sichtbar sowie das Mischungsverhältnis, und auch bei versuchtem Ändern in andere Farben bleiben sie schwarz.

Was ich aber will, ist zu ereichen, daß die Farben geändert werden können, und das auch die resultierende Farbe sofort nach Setzen der zu mischenden Farben und des Farbverhältnisses im Objektinspektor angezeigt wird.
  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 15:43 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