Hirdetés
-
A Coca-Cola következő nagy újítása az AI
it 1,1 milliárd dolláros üzletet kötött a Coca-Cola és a Microsoft, hogy előbbi használja majd a redmondi felhőt és AI-t.
-
Garmin Forerunner 165 - alapozó edzés
ma Leizzadtunk a Garmin legolcsóbb amoledes futóórájával.
-
Lenovo Essential Wireless Combo
lo Lehet-e egy billentyűzet karcsú, elegáns és különleges? A Lenovo bebizonyította, hogy igen, de bosszantó is :)
Új hozzászólás Aktív témák
-
csewe
csendes tag
sziasztok
az lenne a kérdésem,hogy a for alatti hátteret hogyan tudnám kiolvasni.
van egy kódom, de ez csak a háttérképet olvassa a képernyőn lévő ikonok és egyéb
PL.nyitott ablakok képét nem menti le.procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered:=TRUE;
end;procedure TForm1.WMPaint;
begin
PaintDesktop(Canvas.Handle);
end;köszi
-
klambi
addikt
szevasztok
xp re kéne nekem delphi, tud ebben valaki segíteni, mert elég laikus vagy ebben a témában"Mond szépen angolul: Gyors róka!"
-
RootRulez
félisten
Sziasztok!
Hogyan tudnám megoldani, hogy a programom azt érje el, mintha az Asztal megjelenítésére kattintottam volna? Tehát, mindent levigyen a tálcára...
Arra gondoltam, hogy a program szimulálná, mintha lenyomtam volna a win+d billentyűkombinációt. De sajna vagy csak a Win billentyűt, vagy csak a D-t tudom szimulálni külön, egyszerre nem megy. Tudnátok vmi megoldást a problémámra?
Köszi: RR
═════════════════════════════════════════
-
RootRulez
félisten
válasz RootRulez #1804 üzenetére
És meg is válaszolnám a kérdésemet:
uses COMOBJ;
//Deklarálás
procedure Shell_MinimizeAll;
var
Shell : OleVariant;
begin
Shell := CreateOleObject('Shell.Application') ;
Shell.MinimizeAll;
end;//Használata
procedure TForm1.Button1Click(Sender: TObject);
begin
Shell_MinimizeAll;
end;═════════════════════════════════════════
-
Teng
aktív tag
Egy kis segítség kellene. Delphi-ben csináltam led villgotató progit: "PortOut($378,érték)" parancsal. Minden szép és jó volt, de közben úgy alakult, hogy alaplapcsere volt és nyomtatóportos kártyára váltottam. A kari LPT2őn van és a címe CB00-tól kezdődik, ha ezt berírom a 378 helyére, kiakad a program, esetleg valami tipp hogy használhatnám led villogtatásra az lpt-s karim?
Amúgy sajna az automata beállítás sötétszürke az eszközkezelő lpt2 ucsó fülön tehát a címét nem tudom módosítani.
-
zka67
őstag
Nagyon egyszerű a dolog: kell egy Inpout32.dll, amit vagy a program könyvtárába teszel vagy a System32-be.
ZIP közvetlen letöltése, a kicsomagolás után a dll-t az inpout32_source_and_bins\binaries\Dll könyvtárban találod. Neked csak ez a ~12kB-os fájl kell.
A delphi forrásba pedig az implementation után beteszed ezt a két sort:
function Out32(Addr:word;b:byte):byte; stdcall; external 'inpout32.dll';
function Inp32(Addr:word):byte; stdcall; external 'inpout32.dll';Aztán már csak értelemszerűen használod, pl:
Out32($0378,0);
Result := Inp32($0379);[ Szerkesztve ]
-
Teng
aktív tag
Köszike. Istenkirály vagy Anno az io.dll-t használtam, de ott az lpt kari már nem ment.
Azt elmondanád ez mit csinál:"Result := Inp32($0379);"
Ha én csak az outputot akarom használni akkor elég "function Out32(Addr:word;b:byte):byte; stdcall; external 'inpout32.dll';" ez is ugye? nem kell a másik...
-
zka67
őstag
-
Teng
aktív tag
Köszike, a gyors és korrekt választ még egyszer KB fél éve leálltam a témával mert elakadtam gépfrissítés is volt és gondoltam inkább lpt karira porbálok meg alapozni, mert az alaplapokon már nem nagyon van LPT, de pci még egy darabig csak akad, és ha esetleg úgy alakul a progi még akár pci-e LPT karival is fog működni szerintem
-
zka67
őstag
Én meg teljesen leálltam az LPT portról, kizárólag soros portot használok. Az még azért egy mindig van az alaplapon, ha több kell, akkor van 4 portos kártya, vagy van USB-Soros átalakító. Egy 160 Ft-os mikrokontroller kell hozzá, és kész a soros-párhuzamos átalakító, be és kimenetekkel. Pár sor a program, ami a mikrokontrollerbe kell. Írtam hozzá egy DLL-t is, ami eventet generál, ha változás van valamelyik bemeneten, bitenként (is) lehet vezérelni a kimeneteket, és nem kell tudnod, hogy az épp egy soros porton megy.
-
zka67
őstag
Atmel AT89C2051-et használok, ennek 6 ki és 6 bemenetet csináltam +1 led. Ha több kimenet kellene, akkor az AT89S8253-at használnám, de eddig még mindenhová elég volt a 6-6. A C2051-hez csináltam programozót, az S8253 meg ISP-s, ahhoz is csináltam egy soros programozót (C2051-el ). Ezt a két típust szoktam használni, a PIC-eket nem szeretem, én intel procikon nőttem fel és képtelen vagyok megtanulni a PIC-et. Igaz nem is nagyon erőltettem a dolgot. Mondom, a C2051-et ~160 Ft+áfáért veszem.
Most van egy melóm, amihez lehet, hogy kevés lesz a 6 kimenet, de nem csinálok új nyákot, hanem inkább két soros portot fogok használni.
-
dany27
őstag
Hali!
Nem régen kezdtem Delphi-vel ismerkedni. Egy olyan kérdésem lenne hogy egy több form-ból álló programocskát szeretnék készíteni. De egy úgy hogy ha a felhasználó rányom egy gombra akkor ne új ablakot dobjon fel hanem töltse be abba az ablakba az adott formot. Mindegyiket elkészíteném előre, megírnám hozzá az összes eseményt csak cserélgetésre kéne valami tipp.
Előre is köszi! -
Gyuri16
senior tag
ha egy form belsejet akarod valtoztatni akkor szerintem jobb lenne tabokat hasznalni, es azzal valtogatni. amit akarsz (ha jol ertem), bar meg lehet csinalni, de nem erre van kitalalva. tobbnyire windowsos alkalmazasoknak van egy fo ablaka, ami sok masikat tud elohivni, de nem latom ertelmet onmagat valtoztatni.
ha mindenkepp ezt akarod, akkor szerintem inkabb paneleket keszits, es azokat valtogasd a formon belul (tpanelt is lehet design timeban kesziteni)Nem vagyok egoista, csak uborkagyalu!
-
mézespálinka
senior tag
Üdv!
Nagyon lámi kérdés: delphi 7-ben hogyan tudok [-t írni? nem veszi be sehogy, végigpróbáltam alt+gr+minden billentyűvel, de sehogy sem lehet. (rá kéne jönni mert nem szeretném végig bemásolgatni ctrl+c-vel-bár ahhoz is ugyanannyi bill kell, de akkor is . Előre is köszi!
[ Szerkesztve ]
-
Gyuri16
senior tag
válasz mézespálinka #1820 üzenetére
eloszor allits angol billentyuzetet (ha nem azod van)
p mellett jobbra van a [Nem vagyok egoista, csak uborkagyalu!
-
Gyuri16
senior tag
válasz mézespálinka #1822 üzenetére
bal alt+shift vagy a talcan jobb oldalt lehet a billentyuzetet valtoztatni. delphinek semmi koze ehhez. ha nincs a windowsodon angol nyelv, azt valahol a vezerlopultban lehet hozzaadni
Nem vagyok egoista, csak uborkagyalu!
-
dany27
őstag
válasz Gyuri16 #1819 üzenetére
Idén kezdtük suliban Delphit és van egy project amit le kell adni e hónap végéig és minnél tökéletesebben szeretném kivitelezni, mert 100%os munkát nem tudott mutatni a tanár mert ő szerinte eddig nem adott be senki olyant. (Bár nem értem attól mit vár aki 2 hónapja tanulja...). Am én már tanultam más 4GL nyelvet illetve Pascalt is így szeretnék minnél közelebb lenni a 100%-hoz!
Am még1 olyan kérdés hogy szövegbuborékot(azt hiszem hogy így hívják) tudok benn valahogy kreálni?
Előre is kössz!
[ Szerkesztve ]
-
dany27
őstag
Köszi! Am most nézem hogy Delphiben nincs onmouseover event??!!
Mousemove jó valamilyen szempontból csak ugye az minden egérmozdításra lefut, illetve megtudom oldani hogy ne fusson le csak egyszer de az igen orosz teknika...(rakok egy elágazást ami vizsgál egy logikai voltozót amit az első lefutás után hamissá teszek...)Kössz a segítséget!
-
dany27
őstag
válasz Gyuri16 #1827 üzenetére
Delphi 7 Enterprise. Am nem onenter-re gondolsz? Mert onmouseenter nincs az eventek közt! Onenter meg másként funkcionál.. Az nem azt figyeli hogy felette van-e az egér hanem az elem tab-ját. Lehet én vagyok szerencsétlen de nekem ez jött le abból az eventből hogy azt csinálja...
[ Szerkesztve ]
-
dany27
őstag
Hi!
Úgy sikerült megoldanom hogy elkapom a CM_MOUSEENTER illetve LEAVE üzenetet de valamiért dob egy hatalmas hibát mikor ráhúzom az egerem a gombra.. Csak a képbuherálással van baja, msgboxot simán feldobatom vele.
Hoztam létre egy külön típust a gombnak.. Nah de itt a kód beszéljen inkább az!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type TButton = class(stdctrls.TButton)
img_pre: TImage;
procedure WhenMouseEnter(var Message:TMessage);message CM_MOUSEENTER;
procedure WhenMouseLeave(var Message:TMessage);message CM_MOUSELEAVE;
end;
type
Tfrm_main = class(TForm)
Button1: TButton;
img_pre: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frm_main: Tfrm_main;
implementation
{$R *.dfm}
procedure Tfrm_main.Button1Click(Sender: TObject);
begin
if messagebox(frm_main.Handle,'Valóban kiszeretnél lépni a programból?','Kilépés megerősítése',MB_YESNO)= IDYES then
application.terminate
end;
procedure Tbutton.WhenMouseEnter(var Message:TMessage);
begin
img_pre.Picture.LoadFromFile('img/egyik.jpg');
end;
procedure Tbutton.WhenMouseLeave(var Message:TMessage);
begin
img_pre.Picture.LoadFromFile('img/masik.jpg');
end;
end. -
dany27
őstag
Bocsi megint lenne egy kérdésem. Googleztam rá de semmi eredménye nem lett neki.
Nah szóval az lenne a kérdésem hogy ugye Pascalban ha azt szerettem volna elérni hogy csak oda illő karakter vigyen be a user akkor readkeyel beolvastam a leütött bill-t majd ha nekem megfelelt akkor kiírtam a képernyőre meg hozzá adtam a stringhez.
Ezt hogy tudom megoldani Delphiben. Mert itt readkeyel ugye nem megy....
Konkrétan egy TexBox-hoz szeretném azt megcsinálni hogy csak 0-9 közötti számokat illetve , lehessen bevinni.
Illetve felső indexbe lehet valahogy írni?Köszi megint!
[ Szerkesztve ]
-
zka67
őstag
-
dany27
őstag
Köszi! Jó alapodat kicsit kibővítve sikerült azt is megoldanom hogy tizedes vesszőt csak egyszer lehessen bevinni és csakis akkor hamár van előtte valamilyen szám. Valamint ha csak 1db nulla van a box-ban akkor csak tizedes vesző jöhet, utánna meg akármennyi 0-9 lévő szám kivétel tizedes vessző!
Am, de még egyféle képpen átlehet "verni" jobb klikk beillesztés, így akármit bevisz. Nah most vagy a jobb klikket kéne letiltanom vagy nincs valami msg(mint pl.: a CM_MOUSEENTER) amit küld a beillesztéskor? És azt elkapva esetleg lehetne nullázni amit küldene. Vagy csak simán jobb klikkre is bal klikként viselkedne....
Meg még1 olyan hogy ha írok egy saját függvényt, akkor hogyan tudom azt elérni hogy "lássa" a formom elemeit? mert ha csak simán csinálok egy procedurát akkor azt fogja kidobni h nem is meri mondjuk a tb_x.text nevű dolgot. Gondolom azt a típust kéne valahogy átadni neki amiben deklarálva van a textbox.. Csak nem tudom hogy hogyan kell. 4GL nyelvel eddig nem igen foglalkoztam!
Köszi!
-
Gyuri16
senior tag
elso: adsz neki egy ures popupmenut. jobbat nem tudok (esetleg a msg-kel jatszhatsz meg, ahogy irtad)
a masodikra: a form elemei a formnak (mint objektumnak) a valtozoi. tehat a formon belul elered oket, kivulrol pedig csak a formon keresztul lehet (form.valtozo). a poen az egeszben, hogy egyenesen nem lehet elerni, mert ezek private valtozok, tehat valamilyen public metodussal kell trukkozni. ez viszont nem szep megoldas, a formon kivul nem kellene az elemeit babralni. ha olyan valamit akarsz, ami hozzafer a kontrolokhoz, akkor az legyen a form metodusa.
Nem vagyok egoista, csak uborkagyalu!
-
dany27
őstag
válasz Gyuri16 #1836 üzenetére
nem formon kívülről babrálom!
Hanem van 3 olyan textbom amit egyformán kell elenőríznem a keypress eventnél így gondoltam hogy írok rá egy eljárást amit meghívok mind3 keypressnél és akkor így nem kell feleslegesen 3* ugyan azt leírnom.Csak valamiért azt mondja pl a tb_x.text-re hogy ez nem deklarált változó.... Pedig ugyan azon a formon belül van!
Am vissza térve az MSG-re. Az a gond hogy a beillesztésnek nem tudom milyen MSG-je van!
[ Szerkesztve ]
-
Gyuri16
senior tag
ha tenyleg az objektumon belul csinalod, akkor el kell tudnod erni a valtozokat. ennek az eljarasnak az osztalyon belul kell lennie, tehat a deklaracioja igy nez ki:
procedure TForm1.valami;
azon kivul a TEditet (vagy akarmit hasznalsz) siman at tudod adni parameterkent egy ellenorzofuggvenynek (bar ebben az esetben szerintem eleg lenne a frissen begepelt chart atadni):
procedure TForm1.ellenoriz(ed: TEdit);beillesztesnek wm_paste msg-je van
Nem vagyok egoista, csak uborkagyalu!
-
zka67
őstag
Nem kell ennyire túlbonyolítani!
procedure TMainForm.EditKeyPress(Sender: TObject; var Key: Char);
begin
if Length( TEdit(Sender).Text ) > 10 then
TEdit(Sender).Text := '';
end;Mindhárom Edit-ednek ugyanazt az OnKeyPress eventet állítod be (ezért neveztem át Edit1KeyPress-ről) és a TEdit(Sender)-rel megkapod a hívó elem adatait.
-
hpmaster
csendes tag
Tisztelet fórumtársak!
Kérdésem annyi lenne, hogy mi a manó lehet az oka, hogy adatbáziskezelgetés közben (dBase IV) amikor befejeződik egy akt folyamat és az adatbázisba irkálás történik, beírja az adott dolgokat a mekfelelő sorszámú rekordba, majd ezután a legelső elemre ugrik, ennek következtében át kell menni az adatbázislistás oldalra a programban, kiválasztani azt a rekordot, amelyikkel eredetileg dolgozom, mert ha nem, akkor minden, amit ezután változtatok, értelemszerűen az első rekordban fog megtörténni.
Elég zavaró, ha az ember elfelejti, hogy az esemény befejeztével kullogjon át, és válassza ki az aktuális rekordot...
Mi okozhatja a hibát, vagy hogyan tudnám megmondani neki, hogy az a rekord legyen kijelölve, amit én szeretnék?
van egy rész a programban, ahol látszik, hogy átugrik a kijelölés, csak éppen azt nem tudom, hogy mi okozza... a POST?
Vagy hogyan tudok kijelölni másik rekordot? Úgytűnik, hogy a dbGrid összes index-el kapcsolatos tulajdonsága, csak olvasható... vagy mégsem?[ Szerkesztve ]
-
atom87
aktív tag
Üdv!
Kellene egy kis segítség:
Adott egy tömb, ami véletlen szerűen generált számokat tartalmaz. Ezek a számok egy tábla rekordjainak sorszámai lennének. A feladat az lenne, hogy a fő táblából(ami minden rekordot tartalmaz) át kéne mozgatni(batchmove) egy másodlagos('munka') táblába a tömbben található sorszámoknak megfelelő rekordokat fő táblából a másodlagosba...
Korábban a program működött set of 1..255 változóval(ebbe kerültek bele a véletlen generált sorszámok, csak ugye a set az sorba rendeződik, így a véletlenszerűség elúszik):
procedure TKerdesForm.keresminden;
var i,j,k,l,m:integer;
szam:set of 1..255;
begin
torles;
randomize;
i:=StrToInt(edtkerdesszam.text);
edtkerdesszam.clear;
j:=foform.tblalap.recordcount;
szam:=[];
for k:= 1 to i do
begin
repeat
l:=random(j)+1;
until not(l in szam);
szam:=szam+[l];
foform.tblalap.setkey;
foform.tblalap.fields[0].asinteger:=l;
foform.tblalap.gotokey;
foform.tblmunka.insert;
for m:= 0 to foform.tblmunka.fieldcount-1 do
foform.tblmunka.fields:=foform.tblalap.fields(m);
foform.tblmunka.post;
end;
foform.tblmunka.first;
kerdesform.close;
end;Megcsináltam tömbösre, a sorszámok le is generálódnak, de valahol a setkey környékén meghal a progi:
procedure TKerdesForm.keresminden;
var i,j,k,l,m,n:integer;
szamok:TSzamok;
begin
n:=0;
torles;
randomize;
i:=StrToInt(edtkerdesszam.text);
edtkerdesszam.clear;
j:=foform.tblalap.recordcount;
// szam:=[];
TombNullaz(szamok);
for k:= 1 to i do
begin
repeat
l:=random(j)+1;
// until not(l in szam);
until not (TombBenneVan(szamok,l));
szamok[n]:=l;
foform.tblalap.SetKey;
foform.tblalap.fields[0].asinteger:=l;
foform.tblalap.gotokey;
foform.tblmunka.insert;
for m:= 0 to foform.tblmunka.fieldcount-1 do
foform.tblmunka.fields(m):=foform.tblalap.fields(m);
foform.tblmunka.post;
n:=n+1;
end;
foform.tblmunka.first;
kerdesform.close;
end;Ötlet esetleg??
Kawasaki z1000
-
atom87
aktív tag
Nos fentebb felmerült hibát sikerült megoldanom, egy változó kezdő értéke volt a hibás...
De most felmerült egy újabb probléma: megkaptam a másik tömb tartalmát, de a táblába ismét rendeződik az indexelése miatt.
Mit lehet ez ellen tenni?Itt egy kép, hogy mire is gondolok. A pirossal bekarikázott oszlop a kapott véletlen sorszámok és ezek szerint rendeződik.
Én pedig azt szeretném, hogy a random sorrend maradjon meg.
Más szerint kellene indexelnem? Esetleg módosítanom kellene a táblát?Kawasaki z1000
-
dany27
őstag
sziasztok!
Egy két kérdésem lenne megint delphivel kapcsolatban.
Az első az lenne hogy ha mondjuk adott egy TextBox és abban a júzer kijelöli a benne lévő tartalmat azt hogy tudnám vissz a kapni valahogy?
A második az hogy globálisan hozzá tudok rendelni a textboxhoz disabled tulajdonságához egy színt?? mert én azt szeretném ha akkor szürke lenne ha inaktív de nem szeretném mind a "kétszáz millió" helyen átírni!
Illetve Delphiben nem találtam meg azt az opciót ahol tudom állítani azt hogy a textbox tartalma hova legyen igazítva... Vagy azt csak kódból lehet??Előre is köszi!
-
zka67
őstag
Az első kérdésedre:
with Memo1 do buff := Copy(Text,SelStart+1,SelLength);
A második kérdésedet nem értem. Ha az Enabled értékét false-ra állítod, akkor szürke lesz a szöveg.
Az utolsó kérdésedre:
BiDiMode : TBiDiMode;
TBiDiMode = (bdLeftToRight, bdRightToLeft, bdRightToLeftNoAlign,
bdRightToLeftReadingOnly);Ha jobbra akarod igazítani akkor
BiDiMode := bdRightToLeft;
-
dany27
őstag
mert a felhasználónak kellene belevinni adatokat némely esetekben de mikor nem kell neki akkor úgy gondoltam h nem retjem el mert akkor ott lesz egy "luk" vagy pedig arébb kellene pakolnom olyankor mindent. Ezért gondoltam a szürkítésre.....
VB.NET-ben hozzászoktam hogy alapba szürkíti az alapszínt ha tiltott...
Itt nincs rá valami külön opció? -
zka67
őstag
Külön opció nincs, de nem nehéz megírni. Csinálsz egy új osztályt, pl. TGrayEdit-et:
type TGrayEdit = class(TCustomEdit)
private
procedure SetEnabled(Value : boolean);
function GetEnabled : boolean;
public
property Enabled : boolean read GetEnabled write SetEnabled;
end;Megírod hozzá az Enabled funkciókat:
procedure TGrayEdit.SetEnabled(Value : boolean);
begin
TControl(Self).Enabled := Value;
if Value then Color := clWhite else Color := clSilver;
end;
function TGrayEdit.GetEnabled : boolean;
begin
Result := TControl(Self).Enabled;
end;A form-odban vagy ahol használod:
type
TMainForm = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
GrayEdit : TGrayEdit;
end;Létrehozod a GrayEdit-e(ket):
procedure TMainForm.FormCreate(Sender: TObject);
begin
GrayEdit := TGrayEdit.Create(Self);
with GrayEdit do begin
Parent := MainForm;
Left := 8;
Top := 8;
Text := 'Proba';
end;
end;és használhatod :
procedure TMainForm.Button1Click(Sender: TObject);
begin
GrayEdit.Enabled := not GrayEdit.Enabled;
end;
Új hozzászólás Aktív témák
- Samsung Galaxy S23 Ultra - non plus ultra
- Gitáros topic
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Mibe tegyem a megtakarításaimat?
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- YouTube
- Sweet.tv - internetes TV
- Milyen légkondit a lakásba?
- Milyen monitort vegyek?
- Projektor topic
- További aktív témák...
- Eizo Flexscan EV2450 IPS HDMI 2Év Garanciával MONITORCENTER
- 4070 Ti Aorus Master //KERESEM!!//
- MacBook Air 2017 Mint Az Új/8GB/256ssd/Akku 88%/1 hónap gar./p3365/
- 21,5" Samsung érintőképernyős monitor 1év garanciával MONITORCENTER
- Enermax Platimax 850 W moduláris tápegység (Platinum minősités) Beszámitok!