亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dxffbedit.pas

?? 雙人對戰 俄羅斯訪快
?? PAS
字號:
unit DXFFBEdit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Spin, DXInput, TypInfo, ExtCtrls, Menus, ComCtrls;

type
  TDelphiXFFEditForm = class(TForm)
    ListGroupBox: TGroupBox;
    AddButton: TButton;
    DelButton: TButton;
    EditGroupBox: TGroupBox;
    EffectTypeBox: TComboBox;
    EffectTypeLabel: TLabel;
    ConstantLabel: TLabel;
    ConstantYEdit: TSpinEdit;
    ConstantXEdit: TSpinEdit;
    ConstantXLabel: TLabel;
    ConstantYLabel: TLabel;
    FadeTimeLabel: TLabel;
    FadeTimeEdit: TSpinEdit;
    PeriodLabel: TLabel;
    PeriodEdit: TSpinEdit;
    PeriodLabel2: TLabel;
    PowerLabel: TLabel;
    TimeLabel: TLabel;
    TimeEdit: TSpinEdit;
    TimeLabel2: TLabel;
    AttackTimeEditLabel: TLabel;
    AttackTimeEdit: TSpinEdit;
    RunButton: TButton;
    RunGroupButton: TButton;
    OKButton: TButton;
    CancelButton: TButton;
    DXInput: TDXInput;
    NameEditLabel: TLabel;
    NameEdit: TEdit;
    Bevel1: TBevel;
    StopButton: TButton;
    PopupMenu: TPopupMenu;
    A1: TMenuItem;
    DeleteEffectItem: TMenuItem;
    PowerEdit: TSpinEdit;
    Timer: TTimer;
    Bevel2: TBevel;
    N1: TMenuItem;
    N2: TMenuItem;
    SaveToFileItem: TMenuItem;
    AddFromFileButton: TButton;
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    EffectView: TTreeView;
    ConditionLabel: TLabel;
    ConditionXLabel: TLabel;
    ConditionXEdit: TSpinEdit;
    ConditionYLabel: TLabel;
    ConditionYEdit: TSpinEdit;
    Label1: TLabel;
    Label2: TLabel;
    AttackLevelEdit: TSpinEdit;
    FadeLevelEdit: TSpinEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    procedure OKButtonClick(Sender: TObject);
    procedure CancelButtonClick(Sender: TObject);
    procedure EffectViewChange(Sender: TObject; Node: TTreeNode);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure AddButtonClick(Sender: TObject);
    procedure DelButtonClick(Sender: TObject);
    procedure RunButtonClick(Sender: TObject);
    procedure RunGroupButtonClick(Sender: TObject);
    procedure StopButtonClick(Sender: TObject);
    procedure ChangeEvent(Sender: TObject);
    procedure TimerTimer(Sender: TObject);
    procedure NameEditChange(Sender: TObject);
    procedure EffectViewDragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure EffectViewDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure AddFromFileButtonClick(Sender: TObject);
    procedure SaveToFileItemClick(Sender: TObject);
    procedure EffectViewEdited(Sender: TObject; Node: TTreeNode;
      var S: String);
    procedure EffectTypeBoxChange(Sender: TObject);
  private
    FChanged: Boolean;
    FSelectEffect: TForceFeedbackEffect;
    FOldStates: TDXInputStates;
    FUpdating: Boolean;
    function AddTree(Parent: TTreeNode; Effect: TForceFeedbackEffect): TTreeNode;
    procedure Save;
  public
    Effects: TForceFeedbackEffects;
  end;

var
  DelphiXFFEditForm: TDelphiXFFEditForm;

implementation

uses DXConsts;

{$R *.DFM}

procedure TDelphiXFFEditForm.FormCreate(Sender: TObject);
var
  e: TForceFeedbackEffectType;
  s: string;
begin
  for e:=Low(e) to High(e) do
  begin
    if e=etNone then
      s := SNone
    else
      s := GetEnumName(TypeInfo(TForceFeedbackEffectType), Integer(e));

    EffectTypeBox.Items.Add(s);
  end;
end;

function TDelphiXFFEditForm.AddTree(Parent: TTreeNode; Effect: TForceFeedbackEffect): TTreeNode;
var
  i: Integer;
begin
  Result := EffectView.Items.AddChildObject(Parent, Effect.Name, Effect);
  for i:=0 to Effect.Count-1 do
    AddTree(Result, Effect.Effects[i]);
end;

procedure TDelphiXFFEditForm.Save;
begin
  if FChanged then EffectViewChange(nil, nil);
end;

procedure TDelphiXFFEditForm.FormShow(Sender: TObject);
begin
  Caption := Format(SFFBEffectEditor, [Effects.Input.ClassName]);

  Effects.Input.Enabled := True;

  EffectView.Selected := AddTree(nil, Effects);
  if EffectView.Selected<>nil then
    EffectView.Selected.Expanded := True;
end;

procedure TDelphiXFFEditForm.OKButtonClick(Sender: TObject);
begin
  Save;
  Tag := 1;
  Close;
end;

procedure TDelphiXFFEditForm.CancelButtonClick(Sender: TObject);
begin
  Close;
end;

procedure SetControlEnabled(Control: TControl; Value: Boolean);
var
  NewColor: TColor;
begin
  Control.Enabled := Value;

  if Value then NewColor := clWindow else NewColor := clBtnFace;

  if Control is TComboBox then TComboBox(Control).Color := NewColor;
  if Control is TSpinEdit then TSpinEdit(Control).Color := NewColor;
  if Control is TEdit then TEdit(Control).Color := NewColor;
end;

procedure TDelphiXFFEditForm.EffectViewChange(Sender: TObject; Node: TTreeNode);
var
  i: Integer;
  Control: TControl;
begin
  StopButtonClick(nil);

  FUpdating := True;
  try
    if FSelectEffect<>nil then
    begin
      if FChanged then
      begin
        with FSelectEffect do
        begin
          Name := NameEdit.Text;

          EffectType := etNone;

          Power := PowerEdit.Value;
          Time := TimeEdit.Value;
          AttackTime := AttackTimeEdit.Value;
          AttackLevel := AttackLevelEdit.Value;
          FadeTime := FadeTimeEdit.Value;
          FadeLevel := FadeLevelEdit.Value;
          Constant := Point(ConstantXEdit.Value, ConstantYEdit.Value);
          Period := PeriodEdit.Value;
          Condition := Point(ConditionXEdit.Value, ConditionYEdit.Value);

          EffectType := TForceFeedbackEffectType(EffectTypeBox.ItemIndex);
        end;
      end;
    end;

    FSelectEffect := nil;
    if (EffectView.Selected<>nil) and (EffectView.Selected.Data<>nil) then
      FSelectEffect := EffectView.Selected.Data;

    DelButton.Enabled := (FSelectEffect<>nil) and (FSelectEffect.Parent<>nil);
    DeleteEffectItem.Enabled := DelButton.Enabled;
    SaveToFileItem.Enabled := FSelectEffect<>nil;

    if FSelectEffect<>nil then
    begin
      for i:=0 to ComponentCount-1 do
        if (Components[i] is TControl) then
        begin
          Control := TControl(Components[i]);
          if Control.Parent=EditGroupBox then
            SetControlEnabled(Control, True);
        end;
    end else
    begin
      for i:=0 to ComponentCount-1 do
        if (Components[i] is TControl) then
        begin
          Control := TControl(Components[i]);
          if Control.Parent=EditGroupBox then
          begin
            SetControlEnabled(Control, False);
            if Control is TEdit then
              TEdit(Control).Text := ''
            else if Control is TSpinEdit then
              TSpinEdit(Control).Value := 0
            else if Control is TComboBox then
              TComboBox(Control).ItemIndex := 0
            else if Control is TCheckBox then
              TCheckBox(Control).Checked := False;
          end;
        end;
    end;

    if FSelectEffect<>nil then
    begin
      with FSelectEffect do
      begin
        NameEdit.Text := Name;

        EffectTypeBox.ItemIndex := Integer(EffectType);

        PowerEdit.Value := Power;
        TimeEdit.Value := Time;

        AttackTimeEdit.Value := AttackTime;
        AttackLevelEdit.Value := AttackLevel;

        FadeTimeEdit.Value := FadeTime;
        FadeLevelEdit.Value := FadeLevel;

        ConstantXEdit.Value := Constant.X;
        ConstantYEdit.Value := Constant.Y;

        PeriodEdit.Value := Period;

        ConditionXEdit.Value := Condition.X;
        ConditionYEdit.Value := Condition.Y;
      end;

      EffectTypeBoxChange(nil);
    end;
  finally
    FUpdating := False;
  end;

  FChanged := False;
  FOldStates := [];
end;

procedure TDelphiXFFEditForm.AddButtonClick(Sender: TObject);
var
  Effect: TForceFeedbackEffect;
  OwnerEffect: TForceFeedbackEffect;
  i, j: Integer;
  Flag: Boolean;
begin
  if FSelectEffect<>nil then
    OwnerEffect := FSelectEffect
  else
    OwnerEffect := Effects;

  {  Unique name making  }
  j := 0;
  repeat
    Flag := True;
    Inc(j);
    for i:=0 to OwnerEffect.Count-1 do
      if AnsiCompareText(OwnerEffect[i].Name, Format('Effect%d', [j]))=0 then
      begin
        Flag := False;
        Break;
      end;
  until Flag;

  {  Effect making  }
  Effect := TForceFeedbackEffect.Create(OwnerEffect);
  Effect.Name := Format('Effect%d', [j]);

  EffectView.Selected := AddTree(EffectView.Selected, Effect);
end;

procedure TDelphiXFFEditForm.DelButtonClick(Sender: TObject);
begin
  FSelectEffect.Free;
  FSelectEffect := nil;

  EffectView.Selected.Delete;
end;

procedure TDelphiXFFEditForm.RunButtonClick(Sender: TObject);
begin
  if not RunButton.Enabled then Exit;

  Save;

  if not DXInput.UseDirectInput then
  begin
    Screen.Cursor := crHourGlass;
    try
      DXInput.UseDirectInput := True;
    finally
      Screen.Cursor := crDefault;
    end;
  end;

  FSelectEffect.Start;
end;

procedure TDelphiXFFEditForm.RunGroupButtonClick(Sender: TObject);
var
  Effect: TForceFeedbackEffect;
begin
  if not RunGroupButton.Enabled then Exit;

  Save;

  if not DXInput.UseDirectInput then
  begin
    Screen.Cursor := crHourGlass;
    try
      DXInput.UseDirectInput := True;
    finally
      Screen.Cursor := crDefault;
    end;
  end;

  Effect := FSelectEffect;
  while (Effect.Parent<>nil) and (Effect.Parent.Parent<>nil) do
    Effect := Effect.Parent;

  Effect.Start;
end;

procedure TDelphiXFFEditForm.StopButtonClick(Sender: TObject);
begin
  Effects.Stop;
  Effects.UnLoad(True);
end;

procedure TDelphiXFFEditForm.ChangeEvent(Sender: TObject);
begin
  if not FUpdating then FChanged := True;
end;

procedure TDelphiXFFEditForm.TimerTimer(Sender: TObject);
var
  s: TDXInputStates;
begin
  if not (Effects.Input is TKeyboard) then
  begin
    Effects.Input.Update;
    s := Effects.Input.States;

    if (isButton1 in s) and (not (isButton1 in FOldStates)) then
      RunGroupButtonClick(nil)
    else if (isButton2 in s) and (not (isButton2 in FOldStates)) then
      RunButtonClick(nil)
    else if (s*[isButton1, isButton2]=[]) and (FOldStates*[isButton1, isButton2]<>[]) then
      StopButtonClick(nil);

    FOldStates := s;
  end;
end;

procedure TDelphiXFFEditForm.NameEditChange(Sender: TObject);
begin
  if not FUpdating then
    if EffectView.Selected<>nil then
    begin
      EffectView.Selected.Text := NameEdit.Text;
      FSelectEffect.Name := NameEdit.Text;
    end;
end;

procedure TDelphiXFFEditForm.EffectViewDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
var
  Node: TTreeNode;
begin
  Accept := False;

  Node := EffectView.GetNodeAt(X, Y);
  if Node=nil then Exit;

  if Node=EffectView.Items.GetFirstNode then Exit;

  while Node<>nil do
  begin
    if Node=EffectView.Selected then
      Exit;
    Node := Node.Parent;
  end;

  Accept := True;
end;

procedure TDelphiXFFEditForm.EffectViewDragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
  Node, Node2: TTreeNode;
  Effect: TForceFeedbackEffect;
begin
  Save;

  Node := EffectView.GetNodeAt(X, Y);

  if Node<>nil then
  begin
    Effect := TObject(EffectView.Selected.Data) as TForceFeedbackEffect;

    Node2 := EffectView.Selected;

    if X>Node.DisplayRect(True).Right+10 then
    begin
      {  Effect is moved to the child.  }
      Effect.Parent := TObject(Node.Data) as TForceFeedbackEffect;
      EffectView.Selected.MoveTo(Node, naAddChild);
      Effect.Index := EffectView.Selected.Index;
    end else
    begin
      {  Effect is moved to the brother.  }
      Effect.Parent := (TObject(Node.Data) as TForceFeedbackEffect).Parent;
      EffectView.Selected.MoveTo(Node, naInsert);
      Effect.Index := EffectView.Selected.Index;
    end;

    EffectView.Selected := Node2;

    EffectView.Invalidate;
  end;
end;

procedure TDelphiXFFEditForm.AddFromFileButtonClick(Sender: TObject);
var
  i: Integer;
  Effect: TForceFeedbackEffect;
begin
  if not OpenDialog.Execute then Exit;

  Save;

  for i:=0 to OpenDialog.Files.Count-1 do
  begin
    Effect := TForceFeedbackEffect.Create(Effects);
    try
      Effect.LoadFromFile(OpenDialog.Files[i]);
    except
      Effect.Free;
      raise;
    end;

    EffectView.Selected := AddTree(EffectView.Items.GetFirstNode, Effect);
  end;
end;

procedure TDelphiXFFEditForm.SaveToFileItemClick(Sender: TObject);
begin
  SaveDialog.FileName := FSelectEffect.Name+'.ffe';

  if not SaveDialog.Execute then Exit;

  Save;

  FSelectEffect.SaveToFile(SaveDialog.FileName);
end;

procedure TDelphiXFFEditForm.EffectViewEdited(Sender: TObject;
  Node: TTreeNode; var S: String);
begin
  NameEdit.Text := s;
end;

procedure TDelphiXFFEditForm.EffectTypeBoxChange(Sender: TObject);
var
  EffectType: TForceFeedbackEffectType;
begin
  ChangeEvent(Sender);

  EffectType := TForceFeedbackEffectType(EffectTypeBox.ItemIndex);

  SetControlEnabled(PowerEdit, EffectType<>etNone);
  SetControlEnabled(TimeEdit, EffectType<>etNone);

  SetControlEnabled(AttackTimeEdit, EffectType<>etNone);
  SetControlEnabled(AttackLevelEdit, EffectType<>etNone);

  SetControlEnabled(FadeTimeEdit, EffectType<>etNone);
  SetControlEnabled(FadeLevelEdit, EffectType<>etNone);

  SetControlEnabled(ConstantXEdit, EffectType in [etConstantForce, etPeriodic, etCondition]);
  SetControlEnabled(ConstantYEdit, EffectType in [etConstantForce, etPeriodic, etCondition]);

  SetControlEnabled(PeriodEdit, EffectType in [etPeriodic]);

  SetControlEnabled(ConditionXEdit, EffectType in [etCondition]);
  SetControlEnabled(ConditionYEdit, EffectType in [etCondition]);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91丨porny丨在线| 中文字幕一区免费在线观看| 91久久香蕉国产日韩欧美9色| 国产成人在线网站| 国产一区二区网址| 国产在线视频一区二区三区| 看片的网站亚洲| 麻豆国产91在线播放| 麻豆91在线观看| 韩国欧美国产1区| 国产成人在线网站| 国产91综合网| 97se亚洲国产综合自在线不卡| 99精品桃花视频在线观看| av亚洲精华国产精华| 一本到一区二区三区| 欧美中文字幕亚洲一区二区va在线| 色婷婷国产精品久久包臀| 欧美日韩国产美女| 欧美一级在线免费| 久久久不卡影院| 国产无人区一区二区三区| 国产精品久久久久久亚洲毛片| 亚洲天堂中文字幕| 无码av免费一区二区三区试看 | 欧美va亚洲va在线观看蝴蝶网| 欧美成人性战久久| 国产欧美综合色| 日韩精品免费视频人成| 亚洲成精国产精品女| 麻豆成人91精品二区三区| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 97超碰欧美中文字幕| 欧美日韩另类一区| 欧美大片一区二区三区| 国产拍欧美日韩视频二区| 亚洲免费在线视频| 日本伊人色综合网| 国产精品99久久久久久似苏梦涵| 99久久国产免费看| 91精品国产高清一区二区三区| 久久久久久亚洲综合影院红桃| 国产精品国产成人国产三级| 午夜欧美电影在线观看| 国产福利一区二区三区视频在线 | 最新不卡av在线| 婷婷中文字幕综合| 国产v日产∨综合v精品视频| 欧美亚洲综合久久| 国产午夜精品一区二区三区视频| 一区二区三区精品视频在线| 免费久久99精品国产| 97久久人人超碰| 欧美大尺度电影在线| 一区二区三区中文字幕在线观看| 美女尤物国产一区| 色婷婷久久久久swag精品| 精品国产123| 亚洲制服丝袜av| 国产999精品久久久久久| 在线成人高清不卡| 国产精品久久久久久久久快鸭| 日本中文一区二区三区| 91啪亚洲精品| 久久综合av免费| 视频一区中文字幕| 99久久久国产精品免费蜜臀| 日韩精品一区在线| 亚洲图片欧美综合| 成人午夜在线视频| 日韩精品中文字幕一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在| 极品少妇一区二区| 777色狠狠一区二区三区| 中文字幕亚洲一区二区va在线| 久久成人麻豆午夜电影| 欧美吻胸吃奶大尺度电影| 中文字幕日本不卡| 国产一区二区精品久久99| 67194成人在线观看| 亚洲一区欧美一区| av激情亚洲男人天堂| 亚洲精品亚洲人成人网在线播放| 国产精品小仙女| 精品国产乱码91久久久久久网站| 亚洲第一会所有码转帖| 91福利区一区二区三区| 日韩理论在线观看| www.日韩大片| 欧美极品aⅴ影院| 国产一区二区三区黄视频| 日韩欧美在线1卡| 日本aⅴ精品一区二区三区| 欧美男男青年gay1069videost | 一区二区三区中文字幕精品精品| 国产一区二区三区免费| 日韩欧美在线一区二区三区| 青青草精品视频| 欧美精品乱人伦久久久久久| 亚洲黄色av一区| 在线观看视频一区二区欧美日韩| 亚洲欧美电影院| 在线一区二区三区四区五区| 亚洲精品美腿丝袜| 91网站视频在线观看| 亚洲欧洲制服丝袜| 在线免费av一区| 五月婷婷色综合| 欧美日韩国产一级| 日本欧美一区二区在线观看| 欧美一级在线视频| 激情综合网最新| 精品国产1区二区| 成人在线一区二区三区| 国产精品欧美久久久久无广告| 成人高清av在线| 自拍偷拍亚洲综合| 在线亚洲免费视频| 五月婷婷另类国产| 日韩精品一区二区三区在线播放 | 日韩精品五月天| 欧美一级二级三级蜜桃| 麻豆视频一区二区| 久久精品一区二区三区不卡牛牛 | 欧美日韩综合一区| 亚洲不卡一区二区三区| 91精品国产综合久久小美女| 国产一区二区三区蝌蚪| 亚洲国产成人午夜在线一区| 色狠狠色狠狠综合| 午夜精品久久久| 久久天天做天天爱综合色| 成人午夜电影久久影院| 亚洲在线中文字幕| 欧美xxx久久| av资源站一区| 天天操天天干天天综合网| 精品国产乱码久久久久久1区2区 | 久久国产夜色精品鲁鲁99| 国产日韩欧美一区二区三区综合 | 亚洲精品大片www| 欧美喷潮久久久xxxxx| 老司机精品视频导航| 国产精品女人毛片| 欧美三区在线视频| 九九国产精品视频| 亚洲欧美国产高清| 日韩欧美视频在线| 99国产精品视频免费观看| 五月激情综合网| 国产欧美一二三区| 欧美日韩三级在线| 国产91精品久久久久久久网曝门| 亚洲天堂网中文字| 精品国产精品网麻豆系列| 99这里只有久久精品视频| 全国精品久久少妇| 国产精品三级电影| 欧美精选一区二区| 9色porny自拍视频一区二区| 日韩高清在线一区| 国产精品久久久久婷婷二区次| 欧美日韩国产片| av在线综合网| 黄色成人免费在线| 五月天欧美精品| 国产精品国产a| 91精品国产综合久久精品麻豆| 99在线精品一区二区三区| 美女被吸乳得到大胸91| 亚洲精品国产一区二区精华液| 2020国产精品自拍| 欧美日韩高清在线| 91亚洲精品一区二区乱码| 久久se这里有精品| 亚洲国产成人高清精品| 国产精品丝袜久久久久久app| 欧美一区二区精品| 在线视频一区二区三区| 成人一区二区三区视频| 精品系列免费在线观看| 亚洲一区二区三区国产| 亚洲少妇中出一区| 亚洲国产精品二十页| 久久久久久久久久电影| 欧美一级精品在线| 欧美久久一区二区| 日本道色综合久久| www.99精品| 福利一区二区在线| 国产在线精品免费| 理论片日本一区| 蜜桃视频在线一区| 天天爽夜夜爽夜夜爽精品视频| 一区二区三区高清| 亚洲欧美日韩国产综合| 亚洲婷婷国产精品电影人久久| 国产精品久久99| 国产亚洲精品久| 国产欧美日韩另类一区|