Avatar billede eht Nybegynder
24. marts 2003 - 15:13 Der er 3 kommentarer og
1 løsning

MouseUp/Down problem i RichEdit under Win95/98/Me

Jeg ønsker at bruge RichEdit - komponenten i et program, og har brug for både OnMouseUp og OnMouseDown.
Under win95/98/(ME)* er problemet:

Men med venstre museknap bliver 'koden' der er knyttet til MouseDown først udført ved MouseUp og 'koden' knyttet til MouseUp bliver aldrig udført.
Er der mon en løsning på dette problem.
Jeg tror det må være muligt at lave et nyt komponent: "MyRichEdit" som bygger på TRichedit og som "reparerer" dette problem.

Der er trods alt mange der endnu bruger andet end winXP/2000 hvor problemet ikke optræder.

//Erik

* Jeg har ikke prøvet under WindowsMe men regner med at problemet også findes her da det jo grundlæggende er som win98
Avatar billede mortrr Praktikant
24. marts 2003 - 17:43 #1
Kan det passe at du bruger Delphi 4?

Jeg kan huske den fejl fra dengang.
Det kom aldrig nogen fix til det, men det virkede vist fra Delphi 5.
Avatar billede eht Nybegynder
24. marts 2003 - 19:37 #2
Ja, jeg bruger normalt Delphi4, men har også prøvet "den gratis version" af Delphi6 og det var det samme problem.
Det der er afgørende er windowsversionen som programmet afvikles under.
//Erik
Avatar billede martinlind Nybegynder
25. marts 2003 - 09:40 #3
Det er fordi RichEdit er en Windows control som "bare" er pakket ind, du kan evt. prøve at se om M$ har en opdatering af deres Control
Avatar billede eht Nybegynder
07. april 2003 - 10:59 #4
Jeg har fundet ud af at problemet måske kan løses på denne måde.
Måske kan det mon laves lidt bedre. Som det er nu fungerer det ikke som en helt "selvstændig" komponent, fordi der i komponentuniten henvises til en konkret unit i mit program.

Der laves et nyt komponent:

unit newRichEdit;

interface

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


type


  TRichEdit2 = class(TRichEdit)
  private
    { Private declarations }
    Procedure CMMouseUp(var msg:TMessage);message WM_LBUTTONUP;
    Procedure CMMouseDown(var msg:TMessage);message WM_LBUTTONDOWN;

  protected

    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }

  end;

procedure Register;

implementation

  procedure TRichEdit2.CMMouseDown(var msg:TMessage);
begin
SetCapture(Handle);

// MinProcedure  f.eks

{ Form1.RichEdit21MouseDown(self,
                        mbLeft,
                        [ssLeft],
                        Mouse.CursorPos.X - self.Left-parent.Left,
                        Mouse.CursorPos.Y - self.Top-parent.Top);}
//  Husk I så fald:  uses minUnit;
//  Dette skrives først efter at komponenten er registreret.
//kan det laves smartere????


end;


procedure TRichEdit2.CMMouseUp(var msg:TMessage);
begin

//Min Procedure

ReleaseCapture;
end;


procedure Register;
begin
  RegisterComponents('MediaMixer', [TRichEdit2]);
end;

end.


//Erik
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester