![]() |
UpDownButton und TMediaPlayer?
Ich versuche aktuell was kleines nettes zu programmieren, und benötige dafür einen MediaPlayer.
Wie dieser funktioniert habe ich bereits herausgefunden, aber ich nutze auch einige UpDown Button damit das Programm nicht allzu hässlich aussieht. Der MediaPlayer ist innerhalb des Formulars nicht einmal sichtbar, sprich, die Buttons die mit ihm kommen werden nicht verwendet, er ist einfach nur zum spielen von Dateien existent. [dcc32 Fehler] Inkompatible Typen: 'TUDBtnType' and 'TMPBtnType' Ist der Fehler der mich beunruhigt. Alles was ich daraus erfahre ist, dass ich keine UpDown Buttons nutzen kann, wenn ich gleichzeitig einen MediaPlayer nutzen will. Ist das die harte Wahrheit oder kann man sich da herum schummeln? |
AW: UpDownButton und TMediaPlayer?
Quelltext von der betreffenden Stelle? :glaskugel:
|
AW: UpDownButton und TMediaPlayer?
Der ganze Spaß geht ab hier los
Code:
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin if button = btNext then begin if ATP = 0 then begin Label7.Color:=clRed; end else STG:=STG + 1; CalcATP; CalcATK; Label2.caption:= 'ATK: ' + FloatToStr(ATK); Label3.Caption:= 'Stärke: ' + FloatToStr(STG); end; if button = btprev then begin STG:= STG - 1; CalcATK; CalcATP; Label2.caption:= 'ATK: ' + FloatToStr(ATK); Label3.Caption:= 'Stärke: ' + FloatToStr(STG); end; end; procedure TForm1.UpDown2Click(Sender: TObject; Button: TUDBtnType); begin if button = btNext then begin if ATP = 0 then begin Label7.Color:=clRed; end else ITG:=ITG+1; CalcATP; CalcMAG; CalcATK; Label4.Caption:= 'Intelligenz: ' + FloatToStr(ITG); Label6.Caption:= 'MAG:' + FloatToStr(MAG); Label2.caption:= 'ATK: ' + FloatToStr(ATK); end; if button = btprev then begin ITG:=ITG-1; CalcATP; CalcMAG; CalcATK; Label4.Caption:= 'Intelligenz: ' + FloatToStr(ITG); Label6.Caption:= 'MAG:' + FloatToStr(MAG); Label2.caption:= 'ATK: ' + FloatToStr(ATK); end; end; procedure TForm1.UpDown3Click(Sender: TObject; Button: TUDBtnType); begin if button = btNext then begin CalcATP; if ATP = 0 then begin Label7.Color:=clRed; end else KON:=KON+1; CalcATP; CalcHP; Label8.Caption:= 'Konstitution: ' + FloatToStr(KON); Label10.Caption:= 'HP: ' + FloatToStr(HP); end; if button = btprev then begin KON:= KON-1; CalcATP; CalcHP; Label8.Caption:= 'Konstitution: ' + FloatToStr(KON); Label10.Caption:= 'HP: ' + FloatToStr(HP); end; end; procedure TForm1.UpDown4Click(Sender: TObject; Button: TUDBtnType); begin if button = btNext then begin CalcATP; if ATP = 0 then begin Label7.Color:=clRed; end else WIL:=WIL+1; CalcATP; CalcMP; Label9.Caption:= 'Willenskraft: ' + FloatToStr(WIL); Label11.Caption:= 'MP: ' + FloatToStr(MP); end; if button = btprev then begin WIL:= WIL-1; CalcATP; CalcMP; Label9.Caption:= 'Willenskraft: ' + FloatToStr(WIL); Label11.Caption:= 'MP: ' + FloatToStr(MP); end; end; end. |
AW: UpDownButton und TMediaPlayer?
Ich denke mal es liegt an der Unitreihenfolge, im USES deiner Unit.
Wenn zwei Units einen gleichnamigen Typen veröffentlichen, dann erwischst du ohne Namespace (unitname.typname) immer den Typen aus der letzten Unit, in deiner Liste. [add] Zitat:
Zitat:
|
AW: UpDownButton und TMediaPlayer?
Sowohl in der Unit MPlayer als auch in ComCtrls gibt es btNext und btPrev.
Werden beide Units eingebunden, muss man ggf. die Konstanten direkt aus den Units holen (sonst entscheide wahrscheinlich die Reihenfolge in der USES-Klausel, aus welcher Unit die Konstante verwendet wird): if button=Vcl.ComCtrls.btNext oder if button=Vcl.mplayer.btNext passend zum Sender wählen. |
AW: UpDownButton und TMediaPlayer?
Delphi zeigt mir jede Zeile die
Code:
oder
if button = btNext then
Code:
enthält als einen Fehler an.
if button = btprev then
|
AW: UpDownButton und TMediaPlayer?
siehe meine Antwort.
|
AW: UpDownButton und TMediaPlayer?
Hehe, hier ist das Problem, ich hab absolut keine Ahnung wovon du redest, ich
bin jetzt nicht zwingend der beste Delphi Programmierer :oops: |
AW: UpDownButton und TMediaPlayer?
Das steht in der Unit ComCtrls:
Delphi-Quellcode:
Und das steht in er Unit MPlayer:
TUDBtnType = (btNext, btPrev);
Delphi-Quellcode:
Wie dir auffällt tauchen die Kontanten btNext und btPrev in beiden auf, sind aber unterschiedliche Type. Einmal Typ TUDBtnType und einmal TMPBtnType.
TMPBtnType = (btPlay, btPause, btStop, btNext, btPrev, btStep, btBack, btRecord, btEject);
Ich nehme an in deiner USES steht MPlayer vor ComCtrls. Wenn du jetzt bei der If-Abfrage deines UpDownButtons einfach Button mit btNext vergleichst, holt sich Delphi die erste Konstante mit dem Namen btNext und die ist dann dummerweise vom Typ TMPBtnType. Beim Vergleich stellt Delphi fest, dass die Typen nicht zueinander passsen, daher der Fehler. Schreibt du
Delphi-Quellcode:
gibst du die Unit an, aus der die Konstante verwendet werden soll. Somit passen dann die Typen.
if Button=Vcl.Comctrls.btNext
Äquivalent solltest du das dann beim OnClick im Mediaplayer, falls verwendet, ebenso machen. |
AW: UpDownButton und TMediaPlayer?
Aaaah, verstehe!
Das hat in der Tat das Problem gelöst, ich habe zu danken! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 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 by Thomas Breitkreuz