Hi. Ich habe so gut wie keine Erfahrung damit, Komponenten für Delphi zu erstellen, trotzdem will ich mir eine erste Komponente erstellen, die ich einfach immer wieder brauchen werde. War klar, daß ich einige Fehler machen würde. Und hier sind sie, die Fehler und der Code:
Code:
01.unit ColorMixer;
02.
03.interface
04.
05. uses
06. SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
07. Forms, Dialogs, StdCtrls;
08.
09. type
10. TColorMixer=class(TObject)
11. private
12. FColor1_Original: TColor;
13. FColor2_Added: TColor;
14. FMixStrengthPercentage: Byte;
15. FColor3_Result: TColor;
16. protected
17. function Colorize(Sender: TObject; ColorOriginal, ColorAdded: TColor; PercentageStrength: Byte): TColor;
18. public
19. constructor Create( AOwner: TComponent ); override;
20. 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;
23. published
24. property Color3_Result: TColor read FColor3_Result
25. write SetColor3_Result
26. default clGray;
27. end;
28.
29. procedure Register;
30.
31.implementation
32.
33. constructor TColorMixer.Create(AOwner: TComponent);
34. begin
35. inherited Create(AOwner);
36. end;
37.
38. function TAlpha.Colorize(Sender: TObject; ColorOriginal, ColorAdded: TColor; PercentageStrength: Byte): TColor;
39. var
40. Color1, Color2: LongInt;
41. ValueR, ValueG, ValueB, Value1, Value2: Byte;
42. begin
43. PercentageStrength:=Round(2.55*PercentageStrength);
44. Color1:=ColorToRGB(ColorOriginal);
45. Color2:=ColorToRGB(ColorAdded);
46. Value1:=Byte(Color1);
47. Value2:=Byte(Color2);
48. ValueR:=PercentageStrength*(Value1-Value2) shr 8+Value2;
49. Value1:=Byte(Color1 shr 8);
50. Value2:=Byte(Color2 shr 8);
51. ValueG:=PercentageStrength*(Value1-Value2) shr 8+Value2;
52. Value1:=Byte(Color1 shr 16);
53. Value2:=Byte(Color2 shr 16);
54. ValueB:=PercentageStrength*(Value1-Value2) shr 8+Value2;
55. Result:=(ValueB shl 16)+(ValueG shl 8)+ValueR;
56. end;
57.
58. procedure Register;
59. begin
60. RegisterComponents('Sven Littkowski`s Best',[TColorMixer]); // Eher "Sven Littkowski's Worst"...
61. end;
62.
63.end.
Zitat von
Mein Delphi 7:
[Error] ColorMixer.pas(19): Cannot override a static method
[Error] ColorMixer.pas(26): Field or method identifier expected
[Error] ColorMixer.pas(35): Too many actual parameters
[Error] ColorMixer.pas(38): Function needs result type
[Error] ColorMixer.pas(43): Undeclared identifier: 'PercentageStrength'
[Error] ColorMixer.pas(44): Undeclared identifier: 'ColorOriginal'
[Error] ColorMixer.pas(45): Undeclared identifier: 'ColorAdded'
[Error] ColorMixer.pas(60): Incompatible types: 'TComponentClass' and 'Class reference'
[Error] ColorMixer.pas(17): Unsatisfied forward or external declaration: 'TColorMixer.Colorize'
[Fatal Error] dclusr.dpk(176): Could not compile used
unit '..\Projects\Sven\
Unit ColorMixer\ColorMixer.pas'
Der Quellcode ist sehr kurz, da die Komponente nur eine sehr grundlegende Funktion erfüllt. Trotzdem die vielen Fehler. Bitte setzt nicht voraus, daß mir Hinweise in den meisten Fällen helfen werden, da dies ein Neuland für mich ist. Ich denke da eher an Korrekturen. Na, mal sehen. Jedenfalls vielen Dank für's Lesen und Zeitnehmen, und auch für Eure guten Absichten!