Announcement

Collapse
No announcement yet.

Leinwand / Bild erlaubt kein Zeichnen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Leinwand / Bild erlaubt kein Zeichnen

    Ich habe ein Delphi6 Programm mit einem ziemlich einfachem Fenster. Ein paar Radiobutton, eine Combobox und Button.
    Wenn das Fenster geöffnet wird, erscheint manchmal die Fehlermeldung "Leinwand/Bild erlaubt kein Zeichnen"

    Hat jemand eine Idee, was ich ausprobieren könnte ? Das Fenster ist so einfach, daß ich nicht weiß, wonach ich sehen könnte.

  • #2
    Vieleicht hat du ja ausversehen eine komponente drauf gezogen, die dann noch ausserhalb des sichtbaren bereiches ist. Guck mal im objekt inspektor, ob dies zutrifft. Ansonntesn fällt mir dazu auch nix eim. ggf. mal den quellcode uploaden, wenns klein genug ist

    Comment


    • #3
      Nein, das war es leider nicht. Es tritt auch nicht bei jedem Öffnen auf, sondern nur hin und wiede

      Comment


      • #4
        Hier ist das Ding

        unit HCSVComSettings;

        interface

        uses
        Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
        Dialogs, DB, DBTables, StdCtrls, ExtCtrls, ComCtrls;

        type
        TFormHCSVComSettings = class(TForm)
        Sprachen: TTable;
        rgBaudrate: TRadioGroup;
        btnAbbrechen: TButton;
        btnOkay: TButton;
        rgParity: TRadioGroup;
        ComboBox1: TComboBox;
        rgFlowcontrol: TRadioGroup;
        Panel1: TPanel;
        Label1: TLabel;
        lblPause: TLabel;
        Label3: TLabel;
        TrackBar1: TTrackBar;
        Label4: TLabel;
        Label5: TLabel;
        procedure btnOkayClick(Sender: TObject);
        procedure FormShow(Sender: TObject);
        procedure LoadComPort;
        procedure SaveComPort;
        procedure TrackBar1Change(Sender: TObject);
        private
        { Private-Deklarationen }
        public
        { Public-Deklarationen }
        TextSprache:String;
        SprachenIndex:String;
        ConnectNameFile:String;
        ComPortNameFile:String;
        end;

        var
        FormHCSVComSettings: TFormHCSVComSettings;

        implementation

        {$R *.dfm}

        uses IniFiles, ComPortEditor;

        procedure TFormHCSVComSettings.btnOkayClick(Sender: TObject);
        begin
        SaveComPort;
        end;

        procedure TFormHCSVComSettings.FormShow(Sender: TObject);
        begin
        // Beschriftungen der Oberflächenelemente anpassen
        Sprachen.Open;
        Sprachen.IndexName := 'TypSubLfnr';
        Sprachen.Setkey;
        Sprachen.FieldByName ('Typ').AsString := SprachenIndex;
        Sprachen.FieldByName ('SubLfnr').AsInteger := 1;

        if Sprachen.Gotokey = True then
        begin
        // Fensterüberschrift
        Self.Caption := Sprachen.FieldByName(TextSprache).AsString;
        Sprachen.Next;

        // Button
        btnOkay.Caption := Sprachen.FieldByName(TextSprache).AsString;
        Sprachen.Next;
        btnAbbrechen.Caption := Sprachen.FieldByName(TextSprache).AsString;
        Sprachen.Next;

        // Label
        Label4.Caption := Sprachen.FieldByName(TextSprache).AsString;
        Sprachen.Next;
        Label5.Caption := Sprachen.FieldByName(TextSprache).AsString;
        Sprachen.Next;

        //Optionen Baudrate
        rgBaudrate.Caption := Sprachen.FieldByName(TextSprache).AsString;
        Sprachen.Next;

        //Optionen Parity
        rgParity.Caption := Sprachen.FieldByName(TextSprache).AsString;
        Sprachen.Next;
        rgParity.Items.Clear;
        rgParity.Items.Add(Sprachen.FieldByName(TextSprach e).AsString);
        Sprachen.Next;
        rgParity.Items.Add(Sprachen.FieldByName(TextSprach e).AsString);
        Sprachen.Next;

        //Optionen Flowcontrol
        rgFlowcontrol.Caption := Sprachen.FieldByName(TextSprache).AsString;
        Sprachen.Next;
        rgFlowcontrol.Items.Clear;
        rgFlowcontrol.Items.Add(Sprachen.FieldByName(TextS prache).AsString);
        Sprachen.Next;
        rgFlowcontrol.Items.Add(Sprachen.FieldByName(TextS prache).AsString);
        Sprachen.Next;

        end;
        Sprachen.Close;

        // ComPort Einstellungen aus INI-Datei lesen
        LoadComPort;

        end;

        procedure TFormHCSVComSettings.TrackBar1Change(Sender: TObject);
        begin
        Try
        lblPause.Caption := IntToStr(Trackbar1.Position);
        Except
        end;
        end;

        procedure TFormHCSVComSettings.LoadComPort;
        var
        LoadIni: TIniFile;
        LastComPort:Integer;
        begin
        // Zuletzt verwendete Einstellungen aus Ini-Datei laden
        LoadIni := TIniFile.Create(ConnectNameFile);
        Trackbar1.Position := LoadIni.ReadInteger ('TCP-COM-Settings', 'Pause', 30);
        rgBaudrate.ItemIndex := LoadIni.ReadInteger ('COM-Settings', 'Baudrate', 3);
        rgParity.ItemIndex := LoadIni.ReadInteger ('COM-Settings', 'Parity', 1);
        rgFlowControl.ItemIndex := LoadIni.ReadInteger ('COM-Settings', 'Flowcontrol', 1);
        lblPause.Caption := IntToStr(Trackbar1.Position);
        LastComPort := LoadIni.ReadInteger ('COM-Settings', 'ComPort', 1);

        ComboBox1.Clear;
        FormComPortEditor.LoadComNameinComboBox(ComPortNam eFile, ComboBox1);
        ComboBox1.ItemIndex := LastComPort - 1;

        LoadIni.Free;
        end;

        procedure TFormHCSVComSettings.SaveComPort;
        var
        SaveIni: TIniFile;
        begin
        // Zuletzt verwendete Einstellungen aus Ini-Datei laden
        SaveIni := TIniFile.Create(ConnectNameFile);
        SaveIni.WriteInteger ('TCP-COM-Settings', 'Pause', Trackbar1.Position);
        SaveIni.WriteInteger ('COM-Settings', 'Baudrate', rgBaudrate.ItemIndex);
        SaveIni.WriteInteger ('COM-Settings', 'Parity', rgParity.ItemIndex);
        SaveIni.WriteInteger ('COM-Settings', 'Flowcontrol', rgFlowControl.ItemIndex);
        SaveIni.WriteInteger ('COM-Settings', 'ComPort', ComboBox1.ItemIndex + 1);
        SaveIni.Free;
        end;

        end

        Comment


        • #5
          Hallo Peter,
          es wäre möglich, das Du eine Komponente zum Neuzeichnen aufforderst (z.B. Aufruf von Paint) oder eine Methode von Canvas verwendest. Dies kann auch diesen Fehler auslösen, wenn die Komponente noch nicht sichtbar ist.
          Falls Du mittels Canvas etwas ausgibst, dann prüfe doch vor dem Aufruf ob Canvas.Handle <> INVALID_HANDLE_VALUE ist.

          Gruß
          Richar

          Comment


          • #6
            Hi Peter,
            unsere Posts haben sich wohl überschnitten.
            Versuch doch mal, in jeder Prozedur und Funktion ein TRY ... EXCEPT - Block einzubauen und da eine Ausgabe zu machen. Dadurch kannst Du sehen, in welcher Methode der Fehler auftritt.

            Gruß
            Richar

            Comment


            • #7
              Hallo,
              ja das werde ich einmal machen. Nur, ich rufe das Fenster mit

              Try
              // Aufrufen
              Finally
              end

              modal auf. Somit war ich der Meinung, daß man diesen Fehler offensichlich nicht abfangen kann

              Comment

              Working...
              X