Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
Al MWC Qualcomm annuncia una coalizione industriale per lanciare il 6G entro il 2029 e introduce agenti IA per la gestione autonoma della RAN. Ericsson, presente sul palco, conferma la direzione: le reti del futuro saranno IA-native fin dalla progettazione
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air è un ultraleggero da 1 kg con Ryzen 5 6600H, display 14" 16:10 e 16 GB LPDDR5. Offre buona portabilità, autonomia discreta e costruzione in alluminio, ma storage PCIe 3.0 e RAM saldata limitano l'espandibilità. A 549 euro sfida brand più noti nella stessa fascia di mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-04-2009, 00: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, 08: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, 11: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, 11: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, 11: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, 16: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, 16: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, 08: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, 22: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, 14: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, 17: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, 18: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, 14: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, 15: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, 15: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 15:34.
Caridorc è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Rocket Lab ha posticipato il lancio del ...
Dalla missione Artemis IV il razzo spazi...
Una delle sonde europee di ESA Proba-3 h...
Un modder fa girare Linux su PS5: GTA V ...
MacBook Neo: nessuna sorpresa nei primi ...
La serie POCO X8 Pro è pronta al ...
Smartphone: 2026 difficile per il mercat...
Star Wars: Knights of the Old Republic R...
Huang, NVIDIA: OpenClaw ha realizzato in...
Annunciano il recupero di 4,8 milioni di...
Oggi degli ottimi auricolari Sony con ca...
Muffa in casa? Questo deumidificatore da...
Sonos Era 100: il punto d'ingresso per u...
"Non stiamo sostituendo nessuno con...
Tutti i robot in offerta ora: prezzi bas...
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: 19:29.


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