Italian community of Lazarus and Free Pascal

Programmazione => Componenti Aggiuntivi => Topic aperto da: Narciso - Agosto 09, 2018, 09:41:19 pm

Titolo: LAzRichedit non si installa
Inserito da: Narciso - Agosto 09, 2018, 09:41:19 pm
quando compilo il pacchetto mi da' errore;

Compile package LazRichEdit 0.1.5: Codice di uscita 1, Errori: 7, avvertimenti: 11, suggerimenti: 43
win32wsrichbox.pas(210,15) Error: Illegal type conversion: "LongWord" to "TStream"
win32wsrichbox.pas(224,10) Error: Illegal type conversion: "LongWord" to "TStream"
win32wsrichbox.pas(240,16) Error: Illegal type conversion: "LongInt" to "TStream"
win32wsrichbox.pas(264,16) Error: Illegal type conversion: "LongInt" to "TStream"
win32wsrichbox.pas(305,10) Error: Identifier not found "UnicodeEnabledOS"
 ed una serie di warning infinita....

il primo e' qua:

 try
    Stream := TStream(dwCookie^);<---------
    pcb := Stream.Write(pbBuff^, cb);
    Result := 0;
  except
    Result := 1;
  end;   

         
ne sapete qlkosa?

Titolo: Re:LAzRichedit non si installa
Inserito da: bonmario - Agosto 10, 2018, 09:28:05 am
Da dove lo hai scaricato?
Sei sicuro che sia ancora in manutenzione?

Ciao, Mario
Titolo: Re:LAzRichedit non si installa
Inserito da: Narciso - Agosto 10, 2018, 09:45:36 am
wiki.freepascal.org
Download
The latest version is available here: http://sourceforge.net/projects/lazarusfiles/files/lzRichEdit.zip/download


non sono sicuro che sia ancora in manutenzione, mi fidavo del sito.


C'e' qualche alternativa?


A dir il vero mi piacerebbe pure un alternativa a tstringgrid, in modo tale da formattare le celle individualmente, ma mi sa che nun ci sta.


Stavo pensando di farmelo io un bel componente, ci sto studiando ma sto in empasse.


bisognerebbe aggiungere alla cella delle Propreta', tipo : colore, allineamento, colore sfondo.

Per Delphi ci sono,ma per lazarus, non ne ho trovati.
Titolo: Re:LAzRichedit non si installa
Inserito da: bonmario - Agosto 10, 2018, 09:55:08 am
Sul forum ufficiale in inglese, verso la fine del thread, anche altri hanno avuto difficoltà in passato, e gli è stato consigliato il pacchetto RichMemo.
Qui il thread:
https://forum.lazarus.freepascal.org/index.php?topic=15327.0


Per quanto riguarda la StringGrid, non serve un componente aggiuntivo, lo puoi già fare tu sfruttando l'evento "onPrepareCanvas". Ti Copio&Incollo un pezzo di codice che ho in un mio programma:

Codice: [Seleziona]
procedure TForm1.TabellaEsitiPrepareCanvas(sender: TObject; aCol,
  aRow: Integer; aState: TGridDrawState);
var WrkTextStyle:TTextStyle;
    ColoreSfondo, ColoreTesto:TColor;
    WrkDataOggiStr:String;
begin
  //Allineamento delle colonne
  with Sender as TStringGrid do begin
    if (aRow >= FixedRows) then begin
      WrkTextStyle:=Canvas.TextStyle;
      WrkTextStyle.Alignment:=CarthColTabellaEsiti.ArrayCarthCol[aCol].Allineamento;
      Canvas.TextStyle:=WrkTextStyle;
    end else begin
      //Faccio in modo che la testata sia centrata nella colonna
      WrkTextStyle:=Canvas.TextStyle;
      WrkTextStyle.Alignment:=taCenter;
      Canvas.TextStyle:=WrkTextStyle;
    end;
  end;

  //Coloro le righe
  with Sender as TStringGrid do begin
    //Imposto i colori di default
    ColoreSfondo:=clWindow;
    ColoreTesto:=clWindowText;

    //Determino la data di oggi
    WrkDataOggiStr:=MyDateToStr(Trunc(Now()));

    if (aCol >= FixedCols) and (aRow >= FixedRows) then begin
      //Se il documento non ha come "Data di lock" la data di oggi, probabilmente
      //è ststo chiuso male dall'ultima persona che lo ha aperto, quindi lo segnalo
      //colorando lo sfondo in maniera differente
      if (Pos(WrkDataOggiStr, Cells[ColInData, aRow]) = 0) then begin
        ColoreSfondo:=clYellow;
      end;
    end else begin
      //Disegno delle "Celle fisse (testate)"
      ColoreSfondo:=clBtnFace;
      ColoreTesto:=clWindowText;
    end;


    //Ora che ho determinato qual'è il colore da dare allo sfondo ed al testo, li imposto
    if CambiaColoriCella((Sender as TStringGrid), aRow, ColoreSfondo, ColoreTesto, True) then begin
      Canvas.Brush.Color:=ColoreSfondo;
      Canvas.Font.Color:=ColoreTesto;
    end;
  end;
end;

Ciao, Mario
Titolo: Re:LAzRichedit non si installa
Inserito da: Narciso - Agosto 10, 2018, 03:09:51 pm
bhe, giacche' ci sei perché non mi spieghi come hai impostato la procedura Cambiacoloricella?

poi come hai impostato l'array:

CarthColTabellaEsiti.ArrayCarthCol[aCol].Allineamento;

e poi come fai a colorare una cella?

Per esempio se metto un tbutton:
procedure TForm1.Button1Click(Sender: TObject);
begin
  CambiaColoriCella(stringgrid1,3,4,clred,clyellow,true);
end;

la chiami cosi'?



Titolo: Re:LAzRichedit non si installa
Inserito da: bonmario - Agosto 10, 2018, 05:50:14 pm
Perché sarebbe molto lunga ....
Per farla semplice, CambiaColoriCella è una funzione che in basa ai parametri ricevuti dice a chi la chiama se la cella è da colorare o meno. E' sviluppata in base alle mie esigenze, che sicuramente non serviranno a nessun altro !!!

L'array "CarthColTabellaEsiti.ArrayCarthCol[aCol].Allineamento;" è un semplice array che ha un elemento per ogni colonna della tabella, in cui mi salvo un campo di tipo "TAlignment = (taLeftJustify, taRightJustify, taCenter);", che naturalmente serve per allineare il testo.

Quello che uso per colorare una cella, è nel codice che ho postato prima !!!
Devi gestire l'evento "onPrepareCanvas" della tua stringgrid.
Parti con cose semplici, tipo colorare di giallo solo le celle che che suno su una riga pari, o su una colonna dispari, o roba del genere.
Quando hai capito il funzionamento, cominci a fare cose più complicate.

Ciao, Mario
Titolo: Re:LAzRichedit non si installa
Inserito da: Narciso - Agosto 11, 2018, 06:19:07 am
ok grazie. Ci studio un po'. IO fino ad oggi avevo fatto cosi':

procedure coloracelle(sg:tstringgrid; ACol, ARow: Integer;  Rect: TRect; mycolor:tcolor);
begin

      //paint the background
      sg.Canvas.Brush.Color := mycolor;
      sg.Canvas.FillRect(Rect);
      sg.Canvas.TextOut(Rect.Left+2,Rect.Top+2,sg.Cells[ACol, ARow]);

end;       

Titolo: Re:LAzRichedit non si installa
Inserito da: bonmario - Agosto 11, 2018, 07:45:45 am
Ok.
Se non ne esci, dimmelo che appena ho tempo ti posto un progettino di esempio.

Ciao, Mario