Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#9

Re: OnClick trotz Enabled=False?

  Alt 1. Apr 2005, 16:53
also, ich hab mir jetzt selber was gebastelt.

ich hab praktisch das "enabled=false" imitiert.

hier der Code:
OnClick
Delphi-Quellcode:
procedure TForm_Main.Wertung_Click(Sender: TObject);
begin
  //Alle Deaktivieren
  Edt_DWZ_Spieler.ReadOnly:=True;
  Edt_Ingo_Spieler.ReadOnly:=True;
  Edt_Elo_Spieler.ReadOnly:=True;
  Edt_BCF_Spieler.ReadOnly:=True;

  Edt_DWZ_Spieler.Color:=clBtnFace;
  Edt_Ingo_Spieler.Color:=clBtnFace;
  Edt_Elo_Spieler.Color:=clBtnFace;
  Edt_BCF_Spieler.Color:=clBtnFace;

  //Angelklicktes Aktivieren
  TLabeledEdit(Sender).ReadOnly:=False;
  TLabeledEdit(Sender).Color:=clWindow;
end;
OnChange
Delphi-Quellcode:
procedure TForm_Main.Wertung_Change(Sender: TObject);
begin
  //Erneuten OnChange-Aufruf umgehen
  Edt_DWZ_Spieler.OnChange:=nil;
  Edt_Elo_Spieler.OnChange:=nil;
  Edt_Ingo_Spieler.OnChange:=nil;
  Edt_BCF_Spieler.OnChange:=nil;
  try
    if Sender=Edt_DWZ_Spieler then //Wenn Sender Edt_DWZ
      begin
      //Umrechnen und in andere Edits eintragen
      Edt_Ingo_Spieler.Text:=IntToStr(Umrechnen.DwzToIngo(StrToInt(Edt_DWZ_Spieler.Text)));
      Edt_Elo_Spieler.Text:=IntToStr(Umrechnen.DwzToElo(StrToInt(Edt_DWZ_Spieler.Text)));
      Edt_BCF_Spieler.Text:=IntToStr(Umrechnen.DwzToBcf(StrToInt(Edt_DWZ_Spieler.Text)));
      end
    else if Sender=Edt_Ingo_Spieler then //Wenn Sender Edt_Ingo
      begin
      //Umrechnen und in andere Edits eintragen
      Edt_DWZ_Spieler.Text:=IntToStr(Umrechnen.IngoToDwz(StrToInt(Edt_Ingo_Spieler.Text)));
      Edt_Elo_Spieler.Text:=IntToStr(Umrechnen.IngoToElo(StrToInt(Edt_Ingo_Spieler.Text)));
      Edt_BCF_Spieler.Text:=IntToStr(Umrechnen.IngoToBcf(StrToInt(Edt_Ingo_Spieler.Text)));
      end
    else if Sender=Edt_Elo_Spieler then //Wenn Sender Edt_Elo
      begin
      //Umrechnen und in andere Edits eintragen
      Edt_DWZ_Spieler.Text:=IntToStr(Umrechnen.EloToDwz(StrToInt(Edt_Elo_Spieler.Text)));
      Edt_Ingo_Spieler.Text:=IntToStr(Umrechnen.EloToIngo(StrToInt(Edt_Elo_Spieler.Text)));
      Edt_BCF_Spieler.Text:=IntToStr(Umrechnen.EloToBcf(StrToInt(Edt_Elo_Spieler.Text)));
      end
    else if Sender=Edt_BCF_Spieler then //Wenn Sender Edt_BCF
      begin
      //Umrechnen und in andere Edits eintragen
      Edt_DWZ_Spieler.Text:=IntToStr(Umrechnen.BcfToDwz(StrToInt(Edt_BCF_Spieler.Text)));
      Edt_Elo_Spieler.Text:=IntToStr(Umrechnen.BcfToElo(StrToInt(Edt_BCF_Spieler.Text)));
      Edt_Ingo_Spieler.Text:=IntToStr(Umrechnen.BcfToIngo(StrToInt(Edt_BCF_Spieler.Text)));
      end;
  except
    //Falls Fehler (kein Integer im Edit)
    TLabeledEdit(Sender).Clear; //Leeren
  end;
  //"Echte" Onchanges zurück
  Edt_DWZ_Spieler.OnChange:=Wertung_Change;
  Edt_Elo_Spieler.OnChange:=Wertung_Change;
  Edt_Ingo_Spieler.OnChange:=Wertung_Change;
  Edt_BCF_Spieler.OnChange:=Wertung_Change;
end;
hat wer ideen zur kürzung, sicherung oder vereinfachung?
jederzeit gerne...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat