mtm - Mi 04.04.12 17:11
Titel: TTrackBar zu eigener Komponente zuordnen
Hallo zusammen !
Ich versuche gerade eine Komponente zu basteln mit der ich die Lautstärke von CD, Wave, u.s.w verändern kann. Funktioniert soweit auch ganz gut.
Nun möchte ich aber im Objektinspektor die Möglichkeit geben, ein TrackBar direkt zuzuordnen, d.h. die Änderung der Lautstärke bei Änderung der TrackBar soll nicht erst programmiert werden müssen.
Leider habe ich dabei folgendes Problem : Die Zuordnung der Trackbar im Objektinspektor funktioniert soweit. Wenn ich das Programm starte, ist die Zuordnung aber wieder verschwunden.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64:
| TVolControl = Class(TComponent) private FType : TDeviceType; FMixerID: Integer; FVolume : Byte; FTrack : TTrackBar; procedure setType(Value: TDeviceType); procedure SetVolume(Value: Byte); procedure SetTrack(Value: TTrackBar); procedure ChgTrack(Sender: TObject); function GetVolume() : Byte; function GetMixerControlID(CompType: integer) : DWORD; public Constructor Create(AOwner: TComponent);override; published property DeviceType: TDeviceType read FType write setType; property Volume: Byte read FVolume write setVolume; property TrackBar: TTrackBar read FTrack write SetTrack; End;
procedure register;
implementation
Constructor TVolControl.Create(AOwner: TComponent); var TypVar: Integer; begin inherited; FType := dtSumme; case FType of dtSumme: TypVar := MIXERLINE_COMPONENTTYPE_SRC_FIRST; dtCD: TypVar := MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; dtSynth: TypVar := MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER; dtWave: TypVar := MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT; end; FMixerID := GetMixerControlID(TypVar); FVolume := GetVolume; end;
... procedure TVolControl.SetTrack(Value: TTrackBar); begin FTrack := Value; FTrack.Min := 0; FTrack.Max := 255; FTrack.Frequency := 25; FTrack.Position := FVolume; FTrack.OnChange := ChgTrack; end;
procedure TVolControl.ChgTrack(Sender: TObject); var i: Byte; begin if FTrack = nil then exit; i := FTrack.Position; if i <> FVolume then SetVolume(i) end; |
jaenicke - Do 05.04.12 12:44
mtm hat folgendes geschrieben : |
| Leider habe ich dabei folgendes Problem : Die Zuordnung der Trackbar im Objektinspektor funktioniert soweit. Wenn ich das Programm starte, ist die Zuordnung aber wieder verschwunden. |
Das kann ich nicht reproduzieren. Ich habe die Komponente schnell mal installiert, auf ein Formular gelegt, eine Trackbar zugewiesen und einen Haltepunkt auf die Prüfung auf nil gelegt. Dort ist die Trackbar bei mir korrekt zugewiesen:
Steht die Trackbar denn in der .dfm Datei korrekt zugewiesen drin?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| object Form203: TForm203 object TrackBar1: TTrackBar end object VolControl1: TVolControl Volume = 176 TrackBar = TrackBar1 Left = 296 Top = 56 end end |