Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#23

AW: Undeklarierter Bezeichner (MediaPlayer)

  Alt 19. Mär 2017, 16:42
Ich korrigiere den mal durch. Moment... Benutze bitte den Delphi Helm Button statt dem Code Button. Da hat man auch den Delphi Style...

Tipps:
* Benutze einen CodeFormatter bist du einigermaßen sicher bist.
* Verwende sprechende Namen. In 2 Monaten weißt du nicht mehr was Label245 ist.
* Die Variablen/ Namen haben keine Längenbegrenzung. Deshalb gibt es keine Notwendigkeit für Abkürzungen.

Delphi-Quellcode:
unit TabbedTemplate;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants,
  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.TabControl,
  FMX.StdCtrls, FMX.Gestures, FMX.Controls.Presentation, FMX.Media;

const
  conSoundAlter = 'C:\Users\Sven\Documents\Embarcadero\Studio\Projekte\Soundbord\Sounds\xx.mp3';

type
  TTabbedForm = class(TForm)
    HeaderToolBar: TToolBar;
    ToolBarLabel: TLabel;
    TabControl1: TTabControl; // bitte bessere Namen...automatisch mit Namensveränderung über den OI
    TabItem1: TTabItem; // bitte bessere Namen...automatisch mit Namensveränderung über den OI
    TabItem2: TTabItem; // bitte bessere Namen...automatisch mit Namensveränderung über den OI
    TabItem3: TTabItem; // bitte bessere Namen...automatisch mit Namensveränderung über den OI
    TabItem4: TTabItem; // bitte bessere Namen...automatisch mit Namensveränderung über den OI
    GestureManager1: TGestureManager; // bitte bessere Namen...automatisch mit Namensveränderung über den OI
    Button1: TButton; // bitte bessere Namen...automatisch mit Namensveränderung über den OI
    MediaPlayer1: TMediaPlayer; // bitte bessere Namen...automatisch mit Namensveränderung über den OI
    procedure FormCreate(Sender: TObject);
    procedure FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean);
    procedure Button1Click(Sender: TObject); // bitte bessere Namen...automatisch mit Namensveränderung über den OI
  private
    procedure PlaySound(DataLink: string); // hier fehlt der Parameter mit Typ .... Sichtbarkeit private besser
  public
    { Public declarations }
  end;

var
  TabbedForm: TTabbedForm;

implementation

{$R *.fmx}

procedure TTabbedForm.FormCreate(Sender: TObject);
begin
  { This defines the default active tab at runtime }
  TabControl1.ActiveTab := TabItem1;
end;

procedure TTabbedForm.FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
{$IFDEF ANDROID}
  case EventInfo.GestureID of
    sgiLeft:
      begin
        if TabControl1.ActiveTab <> TabControl1.Tabs[TabControl1.TabCount - 1] then // then gehört in die gleiche Zeile
        begin // begin/end ... besser auch wenn es bei einzeiligen Anweisungen nicht nötig ist
          TabControl1.ActiveTab := TabControl1.Tabs[TabControl1.TabIndex + 1];
        end;
        Handled := True;
      end;

    sgiRight:
      begin
        if TabControl1.ActiveTab <> TabControl1.Tabs[0] then
        begin // begin/end ... besser auch wenn es bei einzeiligen Anweisungen nicht nötig ist
          TabControl1.ActiveTab := TabControl1.Tabs[TabControl1.TabIndex - 1];
        end;
        Handled := True;
      end;
  end;
{$ENDIF}
end;

procedure TTabbedForm.Button1Click(Sender: TObject);
begin
  playSound(conSoundAlter);
  // TTabbedForm.playSound ist ganz falsch! Du greifst nicht auf die Instanzvariable, das wäre "TabbedForm"", zu sondern auf die Klasse.
  // da die Sichtbarkeit nun private ist kannst du das "TabbedForm" auch weglassen
end;

procedure TTabbedForm.playSound(DataLink: string);
begin // verschoben
  MediaPlayer1.FileName := DataLink;
  MediaPlayer1.Play;
end;

end.

Geändert von haentschman (19. Mär 2017 um 17:09 Uhr)
  Mit Zitat antworten Zitat