Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air combina diverse carte molto interessanti: un OLED PaperMatte da 12 pollici, un corpo sottile e una tastiera molto comoda. Durante la prova abbiamo apprezzato fluidità, audio e comfort visivo, mentre i test hanno chiarito pregi e qualche limite nelle prestazioni. L'autonomia ha convinto anche nell'uso intermittente; la scelta passa dalla compatibilità delle proprie app e dal valore del pacchetto con accessori, proposto a 749 euro
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
Debuttano ufficialmente i primi sistemi notebook basati su piattaforma NVIDIA RTX Spark, abbinati a Windows on ARM e pensati per l'intelligenza artificiale agentica. Architettura integrata tra CPU e GPU che condividono la memoria di sistema, capace di gestire in locale modelli molto grandi ma al contempo anche di spiccare con la grafica e l'elaborazione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Abbiamo provato Motorola razr fold, il pieghevole a libro con display interno LTPO da 8,09 pollici, Snapdragon 8 Gen 5 e batteria da 6000 mAh in 243 grammi. Pennino e custodia sopno già nella confezione, per un foldable che si caratterizza per il pannello luminoso, l'autonomia ottima per la categoria e le fotocamere coerenti e ben sfruttabili. Il listino è di 1999 euro, ma in vendita si trova già a molto meno
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-04-2009, 23:05   #1
Caridorc
Senior Member
 
L'Avatar di Caridorc
 
Iscritto dal: Nov 2006
Città: Reggio Emilia
Messaggi: 1341
[delphi]scroll di due Memo simultaneamente

Il problema è più o meno quello del titolo. Sto programmando come tesina d'esame un editor di testo che faciliti la scrittura di codice html. Nel progetto ho la Memo principale dove puoi scrivere quello che ti pare ed una seconda che tiene il numero delle righe (su questa non si può scrivere). Il problema è che man mano che scrivi del testo, quando arrivi alla fine della finestra, si attiva la scrollbar verticale della memo principale; scrollando su e giù questa memo però le righe è il loro numero si disallineano. Inoltre nella memo dei numeri i primi vengono man mano sostituiti dai nuovi (esempio: quando ho scritto 50 righe, la memo dei numeri segna dalla 25 alla 50, anche se scrollo la memo principale fino all'inizio). Quindi devo fare in modo che la scrollbar della memo principale scrolli anche la memo dei numeri. Concettualmente saprei anche farlo, però non so come trovare l'evento onscroll della memo...ogni aiuto è gradito...grazie in anticipo

ciao a tutti
__________________
Cooler Master Gladiator 600 ASUS M4A79T Deluxe AMD PhenomII X4 965 Black Edition @4.0GHz OCZ 2x2Gb Obsidian DDR3 1600MHz MSI Nvidia GeForce GTX 760 HAWKCooler Master Gx550 550W 80+ (+12V -> 44A)

"Meno male che c'è steam con i suoi sconti, così posso continuare ad avere una lista di giochi lunghissima a cui non giocherò mai " - akrilico
Caridorc è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2009, 07:17   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Francamente è passato tanto tempo e adesso non ricordo questi dettagli, ma devi intercettare uno degli eventi predisposti e "propagarlo" all'altro controllo memo.

Dovrebbe essere qualcosa tipo WM_SCROLLBAR, che è un messaggio che Windows invia all'handle dell'oggetto di tipo memo.

Attenzione che, se non ricordo male, anche la VCL ha eventi propri che a volte "duplicano" o sostituiscono quelli standard di Windows, per cui potrebbe esserci un CM_SCROLLBAR che potrebbe essere la soluzione ai tuoi problemi.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2009, 10:01   #3
Caridorc
Senior Member
 
L'Avatar di Caridorc
 
Iscritto dal: Nov 2006
Città: Reggio Emilia
Messaggi: 1341
Come lo intercetto l'evento? devo scrivere una procedura tipo
procedure memo.wm_scrollbar(???); ?

perchè in modalità design nella colonna events della memo non c'è nessun evento che mi sembra potrei sfruttare...
__________________
Cooler Master Gladiator 600 ASUS M4A79T Deluxe AMD PhenomII X4 965 Black Edition @4.0GHz OCZ 2x2Gb Obsidian DDR3 1600MHz MSI Nvidia GeForce GTX 760 HAWKCooler Master Gx550 550W 80+ (+12V -> 44A)

"Meno male che c'è steam con i suoi sconti, così posso continuare ad avere una lista di giochi lunghissima a cui non giocherò mai " - akrilico
Caridorc è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2009, 10:23   #4
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Infatti non è un evento "classico", ma un evento più primitivo:
Codice:
TZTreeView = class(TTreeView)
  private
    procedure CMHintShow(var Message: TMessage); message CM_HINTSHOW;
end;

procedure TZTreeView.CMHintShow(var Message: TMessage);
begin
  inherited;
  HandleHintShow(Message, FOnGetHint);
end;
Questo è un esempio preso da una mia libreria che gestisce l'evento "primitivo" CMHintShow.

Si fa allo stesso modo con tutti gli altri tipi di eventi del medesimo tipo.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2009, 10:58   #5
Caridorc
Senior Member
 
L'Avatar di Caridorc
 
Iscritto dal: Nov 2006
Città: Reggio Emilia
Messaggi: 1341
ok comincio a capire...però non capisco cosa dovrei mettere al posto di HandleHintShow(Message, FOnGetHint);

ora ho una cosa di questo genere:

Codice:
THTML = class(TForm)
    areatesto: TMemo;
  private
    procedure WMVScroll(var Message: TMessage); message WM_VSCROLL;
end;

procedure THTML.WMVScroll(var Message: TMessage);
begin
  inherited;
//HandleHintShow(Message, FOnGetHint);
end;
un'altra cosa che non capisco è: così non intercetto l'evento vertical scroll dell'intera form (HTML)? io devo intercettare quello della memo (areatesto)
__________________
Cooler Master Gladiator 600 ASUS M4A79T Deluxe AMD PhenomII X4 965 Black Edition @4.0GHz OCZ 2x2Gb Obsidian DDR3 1600MHz MSI Nvidia GeForce GTX 760 HAWKCooler Master Gx550 550W 80+ (+12V -> 44A)

"Meno male che c'è steam con i suoi sconti, così posso continuare ad avere una lista di giochi lunghissima a cui non giocherò mai " - akrilico
Caridorc è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2009, 15:30   #6
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da Caridorc Guarda i messaggi
ok comincio a capire...però non capisco cosa dovrei mettere al posto di HandleHintShow(Message, FOnGetHint);

ora ho una cosa di questo genere:

Codice:
THTML = class(TForm)
    areatesto: TMemo;
  private
    procedure WMVScroll(var Message: TMessage); message WM_VSCROLL;
end;

procedure THTML.WMVScroll(var Message: TMessage);
begin
  inherited;
//HandleHintShow(Message, FOnGetHint);
end;
HandleHintShow era una mia procedura in cui avevo inglobato il codice per gestire l'evento.

Tu ovviamente devi mettere il tuo codice, che deve semplicemente inviare lo stesso evento all'altro controllo Memo che usi.
Quote:
un'altra cosa che non capisco è: così non intercetto l'evento vertical scroll dell'intera form (HTML)?
Esattamente, e non devi farlo.
Quote:
io devo intercettare quello della memo (areatesto)
Già. Io in questi casi realizzo un nuovo componente allo scopo, e poi lo uso normalmente nel mio codice.

Non è una cosa difficile, anzi, se ne hai già realizzato qualcuno è un'operazione piuttosto semplice e veloce.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2009, 15:47   #7
Caridorc
Senior Member
 
L'Avatar di Caridorc
 
Iscritto dal: Nov 2006
Città: Reggio Emilia
Messaggi: 1341
Quindi il codice che ho scritto non mi serve a nulla perchè con quello intercetto lo scroll della form, cosa che a me non serve. Invece dovrei realizzare un nuovo componente...cosa/quale? come? purtroppo non l'ho mai fatto prima....
scusa se rompo così tanto , speravo fosse una cosa molto più semplice
__________________
Cooler Master Gladiator 600 ASUS M4A79T Deluxe AMD PhenomII X4 965 Black Edition @4.0GHz OCZ 2x2Gb Obsidian DDR3 1600MHz MSI Nvidia GeForce GTX 760 HAWKCooler Master Gx550 550W 80+ (+12V -> 44A)

"Meno male che c'è steam con i suoi sconti, così posso continuare ad avere una lista di giochi lunghissima a cui non giocherò mai " - akrilico
Caridorc è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2009, 07:08   #8
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Può darsi che sia possibile intercettare quegli eventi anche senza creare un nuovo componente, ma al momento non mi viene in mente niente.

Realizzarne uno nuovo, comunque, è molto semplice, te l'assicuro. Nella guida di Delphi c'è un esempio in cui mostra come farlo passo passo.

Inoltre se imparerai a creare componenti ti si aprirà un mondo completamente nuovo. Considera che io non utilizzo quasi mai i componenti standard di Delphi, ma di ognuno ho realizzato una mia versione, ed è quella che uso.

Ad esempio, un problema molto comune è quello di passare al componente successivo quando in un controllo TEdit si preme Invio. Bene, questa è una cosa che il mio componente (TZEdit) fa già in automatico, senza che io scriva una sola riga di codice.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 20-04-2009, 21:35   #9
Caridorc
Senior Member
 
L'Avatar di Caridorc
 
Iscritto dal: Nov 2006
Città: Reggio Emilia
Messaggi: 1341
doh

Niente, continuo a provare ma non c'è nulla da fare non ci riesco
come devo fareeeeeee?
__________________
Cooler Master Gladiator 600 ASUS M4A79T Deluxe AMD PhenomII X4 965 Black Edition @4.0GHz OCZ 2x2Gb Obsidian DDR3 1600MHz MSI Nvidia GeForce GTX 760 HAWKCooler Master Gx550 550W 80+ (+12V -> 44A)

"Meno male che c'è steam con i suoi sconti, così posso continuare ad avere una lista di giochi lunghissima a cui non giocherò mai " - akrilico
Caridorc è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2009, 13:43   #10
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Ma non sei riuscito a realizzare nemmeno un componente custom "base"?
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2009, 16:59   #11
Caridorc
Senior Member
 
L'Avatar di Caridorc
 
Iscritto dal: Nov 2006
Città: Reggio Emilia
Messaggi: 1341
Non sono riuscito a creare un oggetto preso dalla memo che abbia l'evento scroll intercettato da quelli base di windows....no, non sono riuscito a fare nulla.
Ho chiesto anche a tutti i prof d'informatica che conosco a scuola e non hanno saputo rispondermi o mi hanno detto che creare un oggetto modificandone uno già esistente (o comunque a partire da uno già esistente) è difficile...Noi l'anno scorso abbiamo solo accennato la programmazione di oggetti e abbiamo fatto roba veramente terra terra (paragonabile al "Hello world")
__________________
Cooler Master Gladiator 600 ASUS M4A79T Deluxe AMD PhenomII X4 965 Black Edition @4.0GHz OCZ 2x2Gb Obsidian DDR3 1600MHz MSI Nvidia GeForce GTX 760 HAWKCooler Master Gx550 550W 80+ (+12V -> 44A)

"Meno male che c'è steam con i suoi sconti, così posso continuare ad avere una lista di giochi lunghissima a cui non giocherò mai " - akrilico
Caridorc è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2009, 17:36   #12
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Vabbé, se sono professori delle superiori è già tanto che sappiano scrivere due righe in Pascal, o addirittura conoscano Delphi. Figuriamoci a scrivere un "nuovo" componente in e per Delphi.

Toglimi una curiosità: sei riuscito almeno a creare un componente derivato dal TMemo standard?
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2009, 13:25   #13
Caridorc
Senior Member
 
L'Avatar di Caridorc
 
Iscritto dal: Nov 2006
Città: Reggio Emilia
Messaggi: 1341
Quote:
Originariamente inviato da Caridorc Guarda i messaggi
Non sono riuscito a creare un oggetto preso dalla memo che abbia l'evento scroll intercettato da quelli base di windows....no, non sono riuscito a fare nulla.
No, non ci sono riuscito...o meglio, ho trovato una piccola guida che spiegava come fare, l'ho seguita e credo di esserci arrivato in fondo (non ne sono sicuro)...quindi fai conto che la risposta sia un completo no. Sorry per la mia nubbiaggine , saresti disposto (se la cosa è fattibile) a farmi una breve guida passo passo per creare una TMemo con l'aggiunta dell'evento onscroll?
__________________
Cooler Master Gladiator 600 ASUS M4A79T Deluxe AMD PhenomII X4 965 Black Edition @4.0GHz OCZ 2x2Gb Obsidian DDR3 1600MHz MSI Nvidia GeForce GTX 760 HAWKCooler Master Gx550 550W 80+ (+12V -> 44A)

"Meno male che c'è steam con i suoi sconti, così posso continuare ad avere una lista di giochi lunghissima a cui non giocherò mai " - akrilico
Caridorc è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2009, 14:34   #14
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
OK, cominciamo per passi allora.

Prima di tutto devi crearti un nuovo progetto di tipo "design package" (da me ha estensione .dpk).

Fatto questo crea al suo interno una nuova Unit (file .pas) che dovrà contenere il codice del nuovo componente. Mettiamo che si chiami NewStdCtrls.pas

A questo punto devi cominciare a scrivere il codice del nuovo componente. Ti fornisco un pezzo di codice tratto da uno dei miei componenti:
Codice:
unit NewStdCtrls;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, Forms,
  StdCtrls, ComCtrls, Menus, Consts, Mask, Graphics;

type
{ TNewMemo}

  TNewMemo = class(TMemo)
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
    property Text;
  end;

procedure Register;

implementation

{$R NewStdCtrls.dcr}

uses
  Variants, SysConst;

procedure Register;
begin
  RegisterComponents('MyNewControls'
    [TNewMemo]);
end;

{ TNewMemo }

constructor TNewMemo.Create(AOwner: TComponent);
begin
  inherited;
end;

destructor TNewMemo.Destroy;
begin
  inherited;
end;

end.
Ricordati di creare il file NewStdCtrls.dcr che deve contenere le icone dei componenti che hai creato.

Se non ricordo male questo file si crea con l'Image Editor incluso in Delphi.

Le icone devono essere a 16 colori e al massimo 32x32 pixel.

Fatto questo puoi compilare il pacchetto e installarlo. Delphi dovrebbe dirti che ha installato 1 nuovo componente nella sezione "MyNewControls".

A questo punto il tuo nuovo componente è pronto all'uso. Basta che vai nella tab "MyNewControls", prendi la sua icona e la trascini nel form.

Questo nuovo componente fa sostanzialmente una cosa: rende disponibile una nuova proprietà chiamata "Text", che rappresenta tutto il testo della proprietà "Lines".

Se tutto ti funziona e arrivi a questo punto, vuol dire che sei pronto per modificare finalmente il tuo componente in modo da ottenere ciò che volevi (far propagare certi suoi messaggi a un altro controllo).

Fammi sapere.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2009, 14:44   #15
Caridorc
Senior Member
 
L'Avatar di Caridorc
 
Iscritto dal: Nov 2006
Città: Reggio Emilia
Messaggi: 1341
Wow! Grazie mille della disponibilità, spero di poter provare tutto stasera poi ti faccio sapere. Grazie ancora


EDIT:
allora....non ci sono riuscito, ma finalamente penso di capire quale sia il problema di fondo: sto usando borland developer studio 2009. Ho anche trovato e scaricato il componente che fa al caso mio, una memo modificata con giusto la roba che mi serve, però non riesco ad installarla. l'archivio che ho scaricato contiene un file .pas e un .dcr e cercando guide su come installarlo ho visto che bisognerebbe andare sul menu compontents->install package. Questa voce non c'è; non c'è nemmeno l'image editor che mi dicevi, e non ci sono nemmeno in Turbo Delphi (quello che usiamo a scuola). Mi sono procurato Delphi7 e lì la roba c'è, ma mi trovo malissimo con l'IDE. C'è un modo per installare il componente che ho scaricato in BDS2009 o in Turbo Delphi?
__________________
Cooler Master Gladiator 600 ASUS M4A79T Deluxe AMD PhenomII X4 965 Black Edition @4.0GHz OCZ 2x2Gb Obsidian DDR3 1600MHz MSI Nvidia GeForce GTX 760 HAWKCooler Master Gx550 550W 80+ (+12V -> 44A)

"Meno male che c'è steam con i suoi sconti, così posso continuare ad avere una lista di giochi lunghissima a cui non giocherò mai " - akrilico

Ultima modifica di Caridorc : 10-05-2009 alle 14:34.
Caridorc è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Motorola razr fold, dalla conchiglia al formato a libro. La recensione Motorola razr fold, dalla conchiglia al formato ...
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo Nokia Innovation Day 2026: la sovranità e...
OpenAI, un modello GPT-5.6 Sol ha usato ...
Google testa Ask Google Help: l'IA di Ge...
Apple aggiorna l'elenco dei prodotti obs...
Renault 5 si aggiorna anche in Italia: p...
L’IA fa il lavoro dei junior. Ma le impr...
Google riduce gli errori quantistici di ...
Xpeng Mona L05: un SUV da 4,87 metri con...
CERN e Mistral AI insieme per il primo L...
Le analisi approfondite sullo scudo term...
Chery Q arriva in Italia: 380 km, trazio...
Rocket Lab rinvia il primo lancio di Neu...
Tutti gli astronauti della missione spaz...
Agenti IA in azienda: il difficile non &...
Anthropic, New York chiede di rinviare l...
Meta aggiorna Edits con link audio, tend...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:42.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v