- AMD K6-III, és minden ami RETRO - Oldschool tuning
- SSD kibeszélő
- Gaming notebook topik
- A Windows 11 lett az úr az asztali PC-k piacán
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Vezetékes FEJhallgatók
- OLED TV topic
- Hobby elektronika
Új hozzászólás Aktív témák
-
csewe
csendes tag
sziasztok
hogy tudnék átmásolni egy pf32bit képet pf24bit be
PL. image1 pf32bit-es ennek egy részletét másolnám image2 pf24bit-be
nem tudom , hogy ha scanline-al vagy pixels-el kiolvason az egyiket és beirom a másikba az lehetséges e.
megpróbáltam egyszerűen image2 := imaqge1 ; de üres képet kaptaqm image2 .-- ben.
-
_AnTi_
tag
Sziasztok!
Gergosz2: a turbo delphi bármely verziója megy tudomáson szerint vista/win7 64-en, illetve azt hiszem a 2006-os delphitől kezdve minden változat megy. Turbo Delphi bizonyos verziója ingyenes, a többiből lehet trial-t letölteni itt érdemes keresgélni.
LeoZso: ezt olvasd át
S-eye: ahogyan Gyuri16 is már írta neked a delphi az egy szoftverfejlesztő környezet. Ezzel nem tudsz nyákot rajzolni, "csak" egy olyan programot írni, amit később erre lehet használni, ami nem olyan egyszerű és ha mindenképpen delphiben kell megoldanod meg kell hozzá tanulnod delphiben programozni. Vannak erre célszoftverek.
Remélem még segíthettem valakinek, mert látom elég régi dolgokra írtam.
-
LeoZso
csendes tag
Sziasztok!
Nekem egy nem túl bonyolult, de számomra mégis ismeretlen problémám lenne.
A helyzet, hogy képet (BMP) szeretnék eltárolni egy Paradox7 táblába. Ott van is egy mezőtípus, Graphic ami elviekbe erre szolgálna. (létrehozatm a táblát)
Van is egy Form-om, amin meg lehet jeleníteni a szgépen lévő BMP képeket egy Image-be.
Kérdés, hogy ezt a képet (Image1.picture) hogyan tudom, milyen utasítással belerakni a táblába??? Milyen beállítások kellenek hozzá??
Mert ugye egyszereűen egy Edit-ből így is bele rakhatnánk a tartalmát:Table1.FieldByName('Név').asstring:=E2.text; (például)
Kép esetén mit kell használni, ill. van-e valami PLUSSZ dolog amit még be kell állítani?
Remélem érthetően írtam le a problémát! Válaszotokat előre is köszönöm!!!!!!!!
-
Gergosz2
veterán
Valaki segítsen!
Kéne egy olyan delphi ami megy Vista 64-bit alatt!
pls help!
-
Gyuri16
senior tag
-
S-eye
senior tag
Hello!Megtudja nekem mondani valaki,hogy a Delphiben hogyan lehetne áramkört rajzolni?Milyen parancsokat kell használni,vagy valami forrást erről?
-
Gyuri16
senior tag
válasz
asimov007 #1790 üzenetére
megyek el itthonrol, egyelore csak ennyi:
delphis tombod 1tol kezdodik, mig c-ben ugye 0tol, erre oda kell figyelni
a StringGrid1SelectCellben a mat1[1,1]:= jatekos; sor a jatekos valtozo csereje utan van, tehat az elso meghivaskor 'O' lesz bennemajd kesobb megnezem jobban
-
asimov007
csendes tag
Kedves forumozok!
a következő oproblémám adódott!
Ir ni kell c++-ban egy dll-t amit delphiben kell meghivni!
Gyuri16 kedves segítségével a delphi rendben vanmde valamiért a dll-nek nem tudom korrektül átadni a mat1 charaktertömböt!
Mivel mind a c++,mind a delphi tudásom minimális,hozzátok fordulok segítségért!!!Nagyon szépen köszönöm!
mind a két program szintaktikailag helyes?(Lefordul),a tdump mutatja is a kiért entry pointot,de delhiből való hiváskor,a c++ nem ad vissza korrekt értékekeket.
HA a delphiben kimommentezem a dll hivást,a kattingatás tökéletes(Köszönöm gyuri16)
A megadott direkt paraméterekkel is mindig 'O' jön vissza!Köszönöm!!!!
ez a c++
#ifndef _DLL_H_
#define _DLL_H_
#if BUILDING_DLL
#define DLLIMPORT __declspec (dllexport)
#define DllExport extern __declspec(dllexport)
#else /* Not BUILDING_DLL */
#endif /* Not BUILDING_DLL */
#endif
#include <stdio.h>
#include <string.h>
int sor( int mat1,int a, int b);
char mat1[10][10];
extern "C"
{
DllExport char kiert(char mat[10][10],int acol, int arow,char jatekos)
{
char c[10]=
{'1','2','3','4','5','6','7','8','9'};
return c[acol];
// return mat[1][1];
}
class DLLIMPORT DllClass
{
public:
DllClass();
virtual ~DllClass(void);
private:
};ez a dlphi kod!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;var CanSelect: Boolean);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
jatekos:char;
i:integer;
j:integer;
Form1: TForm1;
Type mat= array [1..10,1..10] of char;
function kiert(mat: mat;acol: integer;arow: integer;jatekos:char):char; stdcall; external 'Projekt1.dll';
implementation
{$R *.dfm}
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,ARow: Integer; var CanSelect: Boolean);
var
mat1:mat;
begin
if StringGrid1.Cells[ACol, ARow] <> '' then
exit
else
StringGrid1.Cells[ACol, ARow]:=jatekos;
if jatekos='O' then
jatekos:='X'
else
jatekos:='O';
// mat1[Acol,Arow]:= jatekos;
mat1[1,1]:= jatekos;
//Showmessage( kiert(mat1,1,1,jatekos));
//Showmessage( kiert(mat1,acol,arow,jatekos));
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
j:integer;
begin
jatekos:='X';
for i:=1 to 10 do
for j:=1 to 10 do
StringGrid1.Cells[i,j]:= '';
end;
end. -
Gyuri16
senior tag
válasz
Gyuri16 #1787 üzenetére
itt egy egyszeru klikkelgetos megoldas:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure FormCreate(Sender: TObject);
private
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
jatekos:char;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if StringGrid1.Cells[ACol, ARow] <> '' then
exit; // ha mar van ott valami nem irjuk felul
StringGrid1.Cells[ACol, ARow]:=jatekos;
if jatekos='X' then
jatekos:='O'
else
jatekos:='X';
{
ide johet a kiertekeles, dll meghivasa stb
}
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
jatekos:='X';
end;
end.(a formcreate ertelemszeruen a formnak az oncreate esemenye)
-
Gyuri16
senior tag
válasz
asimov007 #1786 üzenetére
nem nagyon neztem mit csinal a programod.. gondolom otodolo akar lenni, ugye? jelen formajaban a programod eleg kusza, nem igazan ertem mit miert csinal. miert akarod a selectet ciklusba rakni, minek oda egyaltalan ciklus. ird le szavakkal, hogy mit is akarsz konkretan
olyat hogy egy stringgridben kattintasokra mukodjon a X es O jeloles felvaltva megirhatok, aztan viszont meg kell tesztelni, hogy osszejott-e egymas mellett az 5 egyforma. tovabba ha szamitogepes ellenfelet akarsz azt is meg kell irni.
ez meg nem szemtelenseg
azt jol sejted, hogy a programozos topicokban nem nagyon szeretjuk azt, ha valaki kesz programot ker, es aztan par nap mulva jon a kovetkezoert. kerdeseket nyugodtan irhatsz forumba, arra van. -
asimov007
csendes tag
válasz
Gyuri16 #1784 üzenetére
Kedves Gyuri 16!
Tudom,egy kissé pofátlan a kérés,de kb 1 hete használom a delphit.
Hogyan tudnám ciklusba rakni a Select -et és a rekurzivitást elkerülni!
Tényleg nagyon idegen nekem még program!
Ha szemtelennek tartasz,bátran mondd meg!!
És köszi a gyors választ
Légyszi irdd meg ,egyáltalán zavarhatlak-e hülye kédésekkel? -
Gyuri16
senior tag
válasz
asimov007 #1783 üzenetére
ha a stack overflowra gondolsz, akkor az azert van, mert rekurzivan meghivod a selectcell fuggvenyedet, es igy vegtelen ciklusba kerul. azon kivul a while ciklusod is vegtelen, mert a vertek valtozot nem valtoztatod meg a ciklusban.
legkozelebb legyszives hasznald a programkod gombot, nagyobb esellyel kapsz segitseget ha nem kell kinlodni a koddal hogy olvashato legyen. tovabba ha leirod milyen hibat dob, az szinten gyorsitja a valaszt.
-
asimov007
csendes tag
Sziasztok!
Nagyon gyenge vagyok delhpiböl!
El kéne egy kis segítség!!!!Miért száll el azonnal ez a gyengécske program?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Type mat= array [1..10,1..10] of integer;
function kiert(mat: mat;xpos: integer;ypos: integer;jatekos:char):integer; stdcall; external 'Projekt1.dll';
implementation
{$R *.dfm}
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var mat1:mat;
vertek:integer;
jatekos:char;
i:integer;
j:integer;
b:boolean;
begin
jatekos:= 'g';
vertek:= 2;
while vertek <> 0 do
begin
if jatekos = 'g' then
jatekos:= 'j'
else
jatekos:= 'g';
StringGrid1SelectCell(Sender,acol, arow,b);
begin
if jatekos = 'g' then
StringGrid1.Cells[Acol,Arow]:='O'
else
StringGrid1.Cells[Acol,Arow]:='X';
end;
end;
end; // while
end. -
Gyuri16
senior tag
te jo eg.. remelem a programokat nem ilyen stilusban irod..
enabled azt jelenti, hogy az adott control hasznalata engedelyezve van e. tehat pl gombnal ha nem enabled akkor szurke, es nem lehet menyomni, ha enabled akkor mukodik rendesen
setfocus aktivva tesz egy controlt. pl egy szoveges mezonel (TEdit, TMemo) odaugrik a kurzor, es rogton irhatsz bele. -
mia91
csendes tag
Hali. léccyke segitsetek.wan 1kis gondunk delphiwel mit jelent es mire hasznaljuka delphiben az enabled es a setfocus????koxike.puxika
-
cellpeti
nagyúr
Szevasztok!
Kezdő vagyok és szeretném elkezdeni a Delphi-t. Milyen könyveket ajánlotok hozzá?
Baga Edit?
-
joergie
őstag
Sziasztok! Szeretnék megoldani egy olyan dolgot, hogy van egy *.asp oldal, amiben van sok(max 100 mondjuk) azonos kezdetű (pl: http://honlap.com/akármi.asp?ID=4jegyűszám) hibatkozás. Ezekben az oldalakban vannak paraméterek. nagyjából 13 ilyen-olyan, de lehet több is.
Milyen programnyelven oldható meg, hogy ezen paramétereket(100*13) lehívja, és ezek értéke szerint tudjak szortírozni(pl egyik legyen több 100nál, másik legyen kevesebb 20nál).
mysql-ra gondoltam, vagy delphi-re, előzőt tanultam régebben, de már fingom sincs, másikba még bele se szagoltam -
Gyuri16
senior tag
válasz
Monika19 #1777 üzenetére
hat en nem az editek onclickjebe tennem, mert az akkor hajtodik vegre ha ranyomsz az editre, szerintem ugy csinald, hogy eloszor kitoltod az adatokat, es ha a gombra nyomsz akkor olvasol be mindent, az osszes editbol. tehat button.onclick
Val-t ugy kell hasznalni ahogy irtad, viszont jobb lenne ha a StrToFloat es FloatToStr-t hasznalnad ahogy irtam (pl azert mert az utobbi tudja, hogy milyen jel a tizedesvesszo - valahol pont, valahol vesszo ez fugg attol, hogy az operacios rendszerben mi van beallitva) -
-
Gyuri16
senior tag
válasz
Monika19 #1775 üzenetére
ha van egy edited pl Edit, akkor egy valtozoba igy tudod atmasolni (ha szam):
a:=StrToFloat(Edit.text);
ezek utan ha mindent beolvastal, kiszamolod a d-t, aztan jon a rettegett if, kb igy:if d<0 then
eredmenyEdit.Text:='0'
else if d=0 then
eredmenyEdit.Text:='1'
else if d>0 then
eredmenyEdit.Text:='2';ez kiirja az megoldasok szamat az eredmenyEdit editbe
ezutan siman kiirod a d-t:EdDiszkriminans.Text:=FloatToStr(d);
-
Csakénvagyok
őstag
válasz
VaniliásRönk #1768 üzenetére
Freeben én sem tudom, TVideoGrabber mindezeket tudja. Csakhogy fizetős
-
Gyuri16
senior tag
válasz
Monika19 #1772 üzenetére
es hol akadtal el?
gondolom masodfoku egyenlet megoldasarol van szo
csinalsz par editet (adatoknak, es eredmenyekre) es egy gombot
gombra teszel olyan akciot, hogy beolvasod az adatokat editekbol, kiszamolod a diszkriminanst, ebbol megallapitod a megoldasok szamat, amit kiirsz, szintugy a diszkriminanst egy masik editbe
stringet szamma tudsz alakitani StrToFloat fuggvennyel (es valos szamokon mukodik), visszafele FloatToStrja es a diszkriminans erteke b^2-4ac
-
Monika19
csendes tag
Hali!
Nagyon sűrgös lenne a segítség...frown.gifDelphiben kellene valami ilyesmit programozni:
Hozz létre Elsőfokú tag, Másodfokú tag és szabadtag Edit mezővel.
Szintén Edit mezővel megoldások számát.
if-el kellene ezt felírni..
- ha 0 > d akkor nincs megoldás
-ha 0 < d akkor több megoldás van
-ha 0=d akkor 1 megoldás van
ezt kiíratni megoldások száma edit mezőben.
d=a*a-4*b*b-diszkrimináns edit mezőben kiíratni a d-t.)
Kérem segítsetek!
Holnapra kell.... confused.gif -
^^|CC|^^
tag
Csáóóó!
Most az lenne a problémám, hogy delphiben kéne véletlen neveket létrehoznom...
A kritériumok azok lennének, hogy random hosszúságúak (1 szótagtól 5 szótagig és 1 szótag az egy msh és egy mgh kell, hogy legyen...)
Sajnos nem vagyok túl jártas a programozásban és kéne a segítség...
Nagyon szépen köszönöm a segítségeket...üdv.:
^^|CC|^^ -
VaniliásRönk
nagyúr
válasz
VaniliásRönk #1768 üzenetére
VLC-vel elvileg lehet, gyakorlatilag nem találok semmilyen használható kódot, a GetVariable-SetVariable mókázást már letiltották, merthogy veszélyes.
-
VaniliásRönk
nagyúr
Delphi segítség kéne hirtelen, de most tényleg kéne.
Videóból (MPEG2) kéne rendszeres időközönként képet lopni. Keresgéltem, és a freeware komponensek között egyedül a DSPacket találtam, ami megfelel, de elég szegényes a dokumentációja, a példaprogram sem működőképes, úgyhogy keresgéltem tovább, de nem igazán találtam mást.
Aztán próbálkoztam Windows Media Player és VLC ActiveX vezérlővel, ezekkel le tudom játszani a file-okat, de nem tudok rájönni, hogy hogyan lehetne velük képet lopni, ha lehetséges egyáltalán. Egész nap túrtam a Google-t, de nem esik túl sok szó egyikről sem. (a VLC wikit el sem érem)
Valakinek van valami ötlete, hogy hogyan tudnám megoldani a problémát? Köszönöm. -
Gyuri16
senior tag
válasz
^^|CC|^^ #1762 üzenetére
ok, lehet egyesevel is atdobalni. fogod az eredeti szamokat, es egyesevel elkezded atdobalni a masikba, ha a ciklusvaltozo 4-gyel oszthato (tehat egy negyes csoport vegere ertel) akkor beszursz egy ' '-t
ezt most kiprobalas nelkul irom, csak hogy lasd hogyan gondolom:str - mostani string
str2 - uj string, ebben lesz az eredmeny
for i:=1 to length(str) do
begin
str2:=str2+str[i];
if i mod 4 = 0 then str2:=str2+' ';
end;ezzel van annyi gond meg, hogy a string legvegere is tesz egy ' '-t, de ezt mar ki tudod szurni egyszeruen.
-
Gyuri16
senior tag
-
^^|CC|^^
tag
válasz
Gyuri16 #1758 üzenetére
nah megcsináltam eddig nekem így néz ki:
var a,i: integer;
s,nullak: string;
m: byte;
begin
try
a:=strtoint(edit2.text);
if a<0 then raise exception.create('Ne legyen negatív!');
if a=0 then s:='0'
else begin
s:='';
while a>0 do begin
m:= a mod 2;
s:=inttostr(m)+s;
a:=a div 2
end;
nullak:='';
for i:=1 to 4-length(s) mod 4 do
nullak:=nullak+'0';
if length(nullak)=4 then
nullak:='';
s:=nullak+s;
end;
showmessage('Számocska:'+#13+#13+s);
except
showmessage('Hiba!!!');
end;
end;a félkövér amit javasoltál... most legalább már tölti őket 0-kal, de még mindig nem tagolja fel 4sével...
-
Gyuri16
senior tag
válasz
^^|CC|^^ #1753 üzenetére
var
str, nullak: String;
mennyi: integer;
begin
str:='10010001000';
nullak:='0000';
mennyi:=(4-(length(str) mod 4)) mod 4;
str:=copy(nullak,1,mennyi)+str;
end;egyanaz egyszerubben:
var
str, nullak: String;
i: integer;
begin
str:='10010001000';
nullak:='';
for i:=1 to 4-length(str) mod 4 do
nullak:=nullak+'0';
if length(nullak)=4 then
nullak:='';
str:=nullak+str;
memo1.Lines.Add(str);
end; -
^^|CC|^^
tag
csáóóó
Nekem olyan típusú problémám lenne, hogy ugye meg van az, hogy beírok egy edit mezőbe egy számot és ki hozza showmessage-ben a bináris kódját...
Igen ez nem volt olyan nehéz...A problémám ott kezdődik mikor azt kéne megcsinálnom, hogy négyesével legyen tagolva és ha ez nem tudna teljesülni( mivel kisebb szám jött ki) akkor azt meg fel kellene töltenie 0-kal....
pl.: (általam kitalált számok általam kitalált eredményekkel...)
231= 11001011001110110
nah itt van kevesebb, mint 4... és ilyenkor kéne feltöltenie 0-kal: 1 1001 0110 0111 0110
0001 1001 0110 0111 0110 ----> ez a végleges formátuma
annyit biztosan tudok, hogy vagy elöltesztelős ciklussal vagy pedig hátul tesztelős ciklussal kell megcsinálni... de még annyira kezdő vagyok, hogy nem igen akar összejönni nekem...
nagyon szépen köszönöm a segítségeket...
-
VaniliásRönk
nagyúr
Kicsit halott a topik.
IP kamerát szeretnék kezelni Delphi 7-ben, de nem igazán találok ilyesmit prog.hu-n és google-lel sem, tud valaki segíteni?
-
Prego
senior tag
Dinamikus tömböt szeretnék átadni:
procedure TForm1.Tombfeltolt;
var i,Tombhossz:integer;
begin
Randomize;
Memo1.Lines.Clear;
Tombhossz := Random(100);
Memo1.Lines.Add(IntToStr(Tombhossz)+' számú elemű tömb létrehozva');
SetLength(T,Tombhossz);
for I := low(t) to high(t) do
begin
T[i] := Random(1000);
MEmo1.Lines.Add(IntToStr(T[i]));
end;
MEmo1.Lines.Add(IntToStr(i)+' elem feltöltve');
end;procedure TForm1.Button2Click(Sender: TObject);
var Tomb:Array of Integer;
begin
Tombfeltolt(Tomb);
end;SetLength-nél kiírja fordításnál hogy Incompatible types. Ez csak egy példaprogi, az eredetiben a Tombfeltölt egy másik Unitban van, tehát nem tudom megadni globális változóként.
-
vz12
tag
Pl.
canvas.Pen.color:=clRed;
canvas.Brush.color:=clBlue;
canvas.Ellipse(5,5,100,100);Ez rajzolni fog egy Piros határvonalú, belül Kék "korongot". RGB is használható.
A vonal (Pen) és kitöltő (Brush) színeket mindig a rajzoló tevékenység ELŐTT kell beállítani, egy adott canvas-on csak 1 Pen és 1 Brush van, ezt a rajzoló utasítások közösen használják. Tehát pl. most egy vonal(50,50,80,80) utasítás Piros vonalat húzna, mert a Pen színe arra lett állítva, itt ugye nincs kitöltés tehát a Brush érdektelen. Szerintem olvasgasd a Help-et, a Delphi-nek elég jó van. -
labuwx
tag
-
vz12
tag
Ez érdekes, ilyet én a D3-ban és D5-ben nem tapasztaltam. Ott simán engedte a vonalat túlhúzni a képen, persze a kívül eső részek nem látszottak. Kellett is ez a lehetőség mert pl. a vonal(0,488,488,488); nem húzná végig a vonalat, a (0,488) még rendben van, de a (488,488) kimaradna, a vonal 1 pixellel hamarabb érne véget, ezért a vonal(0,488,489,488); parancsot kellene alkalmazni a teljes vonal kirajzolásához, ez ugye elvileg 1 pixellel kilógna, de az nem látszik, viszont a (488,488) is jó lenne.
Ilyen új Delphi-vel nincs tapasztalatom, de hátha másnak van. A helyedben addig is bátran kísérletezgetnék, gyűjteném a tapasztalatokat, kis kreativitással gyorsan rá lehet jönni sok mindenre és lehet fejlődni önállóan.
Egy észrevétel: A "vonal" eljárást én nem a "RajzClick" eljárás belső eljárásaként definiálnám.
-
labuwx
tag
Köszönöm mindkettőtöknek!
Most viszont olyan gondom van, hogy nem hajlandó a TImage legalsó ill a jobbszélső sorába vonalat húzni, sőt van ilyen parancs akkor a többi vonal mind "szürke" lesz.
489x489-es TImage -
vz12
tag
Canvas.Line tényleg nincs.
Canvas.MoveTo(x1,y1) odateszi (x1,y1)-ba a kezdőpontot.
Canvas.LineTo(x2,y2) innen húz egy vonalat (x2,y2)-be előzetesen beállított stílussal (szín, vonalvastagság, stb.), ezután a kezdőpont már itt lesz, a következő LineTo már innen fog indulni ha el nem viszed innen. Szerintem érdemes saját Line(x1,y1,x2,y2) eljárást írni a fenti két eljárás felhasználásával, esetleg a színt és vonalvastagságot is érdemes betenni a paraméterekbe majd felhasználni, úgy "szebb", általánosabb eljárást kapsz.
Egyébként egy MxN-es canvas koordinátái (0,0) és (M-1,N-1) között vannak, és a LineTo-nak tapasztalataim szerint (Delphi 5.0-ig) van egy olyan tulajdonsága hogy a VÉGpont utolsó pixelét nem szereti kitenni, lespórolja.A "canvas" tulajdonságait és eljárásait kell nézegetni a help-ben, van téglalap és ellipszis (kör) rajzolási lehetőség is, stb.
Szerk.: Úgy látom hogy beelőztek, de mindegy.
-
Gyuri16
senior tag
szerintem legegyszerubb ugy, ha mindent egy TImage-be rajzolsz. Megcsinalod a negyzethalot, es aztan onMouseDown event-et figyeled (koordinatakbol konnyen ki lehet szamolni melyik mezore kattintottal).
ezek jol johetnek: image.canvas.line, image.canvas.draw, image.canvas.ellipse... -
labuwx
tag
Valaki legyen szíves segíteni a grafikában. Szeretnék írni egy REVERSI játékot, ahoz kellene egy 8x8-s táblázat a táblázat minden rublikájában lenne egy korong(piros, kék, rejtett)
és minden korongnak lenne egy event-je.
Sajnos a grafikát egyáltalán nem ismerem. Nekem elég az is ha belinkeltek egy részletes magyar leírást(sajnos én ilyet nem találtam). -
labuwx
tag
Sziasztok!
Mióta frissítettem a 2009-es Delphi-t Up4-re ezt a hibaüzenetet kapom indításkor:
"acces violation at address 5000CC82 in module 'rtl120.bpl'. Write of address 2067B5D4"
Hiába kattintok az OK-re nem csinál semmit, ha X-et nyomok az üzi ablakán akkor újból előugrik. -
Prego
senior tag
Most tartok ott hogy nem tudom mi a kérdésem, inkább vázolom a tényeket:
készülődik a szakdoga progim, MS Access adatbázist használ, mellete még vannak képek és Word, Excel doksik, amiket generál.
Fősulin gyönyörűen megvitatjuk a jogosultságkezelés minden csínját - bínját, de gyakorlati megvalósítás nem igazán került még napvilágra.
Jelen pillanatban az adatok egy megosztott meghajtón vannak a 3 számítógép egyikén a hálózatban, ADO komponensekkel dolgozom. Szóval kéne valami jogosultságkezelés hogy ki törölhet, ki írhatja az adatokat, illetve ki csak olvashatja. Ezen kívül valami titkosítás sem ártana, mivel bárki becsatlakozik a hálózatba (nem nehéz), megnyithatja az adatbázist egy MS Accessel.
Milyen úton induljak el? -
Gyuri16
senior tag
ehhez kell keszitened egy sajat osztalyt, ami kezelni tudja a nagy szamokat. ilyet tobbnyire ugy szokas, hogy egy (nagy) tomb integert hasznalsz a szamod elraktarozasara. ahhoz hogy igy mukodjon termeszetesen meg kell irnod az aritmetikat is az osztalyodhoz. egy kis szerencsevel talalsz a neten, es akkor nem kell sajatot irni
ezt a dolgot az okosok ugy hivjak, hogy arbitrary length arithmetic -
labuwx
tag
Még az érdekelne, hogy több ezer számjegyű egész számok kezelése megoldható-e?
-
labuwx
tag
duplapost...
-
labuwx
tag
Sziasztok!
Azt szeretném kérdezni, hogy hogyan lehet egy számot egész kitevős hatványára emelni? -
vz12
tag
válasz
Yodafon #1727 üzenetére
Örülök hogy sikerült megoldani, végülis rájöttél hogy hol a hiba.
Nekem csak ez a rengeteg egyedi értékadó utasítás "bántja" a szememet, ciklusban szebb volna, de persze így is működik ...Sudokut már én is csináltam Delphi-ben de én más úton jártam, semmi szükségem nem volt gridre.
-
Yodafon
őstag
Köszi szépen de már megoldódott.
Én is ezen a nyomon indultam el, és ez jött ki belőle:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, OleServer, ExcelXP, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure mezoSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure mezoDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
private
{ Private declarations }
public
k:string[2];
kord:record
osz,sor:integer;
end;
mezo:array[1..9] of TStringGrid;
{ Public declarations }
end;
var
Form1: TForm1;
j:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=1 to 9 do
begin
mezo[i]:=TStringGrid.create(form1);
mezo[i].parent:=form1;
end;
mezo[1].Top:=20;
mezo[1].Left:=50;
mezo[1].FixedCols:=0;
mezo[1].FixedRows:=0;
mezo[1].ColCount:=3;
mezo[1].RowCount:=3;
mezo[1].DefaultColWidth:=20;
mezo[1].DefaultRowHeight:=20;
mezo[1].Ctl3D:=false;
mezo[1].Width:=64;
mezo[1].Height:=64;
mezo[1].ScrollBars:=ssNone;
mezo[1].tag:=1;
mezo[2].Top:=20;
mezo[2].Left:=120;
mezo[2].FixedCols:=0;
mezo[2].FixedRows:=0;
mezo[2].ColCount:=3;
mezo[2].RowCount:=3;
mezo[2].DefaultColWidth:=20;
mezo[2].DefaultRowHeight:=20;
mezo[2].Ctl3D:=false;
mezo[2].Width:=64;
mezo[2].Height:=64;
mezo[2].ScrollBars:=ssNone;
mezo[2].Tag:=2;
mezo[3].Top:=20;
mezo[3].Left:=190;
mezo[3].FixedCols:=0;
mezo[3].FixedRows:=0;
mezo[3].ColCount:=3;
mezo[3].RowCount:=3;
mezo[3].DefaultColWidth:=20;
mezo[3].DefaultRowHeight:=20;
mezo[3].Ctl3D:=false;
mezo[3].Width:=64;
mezo[3].Height:=64;
mezo[3].ScrollBars:=ssNone;
mezo[3].Tag:=3;
mezo[4].Top:=90;
mezo[4].Left:=50;
mezo[4].FixedCols:=0;
mezo[4].FixedRows:=0;
mezo[4].ColCount:=3;
mezo[4].RowCount:=3;
mezo[4].DefaultColWidth:=20;
mezo[4].DefaultRowHeight:=20;
mezo[4].Ctl3D:=false;
mezo[4].Width:=64;
mezo[4].Height:=64;
mezo[4].ScrollBars:=ssNone;
mezo[4].tag:=4;
mezo[5].Top:=90;
mezo[5].Left:=120;
mezo[5].FixedCols:=0;
mezo[5].FixedRows:=0;
mezo[5].ColCount:=3;
mezo[5].RowCount:=3;
mezo[5].DefaultColWidth:=20;
mezo[5].DefaultRowHeight:=20;
mezo[5].Ctl3D:=false;
mezo[5].Width:=64;
mezo[5].Height:=64;
mezo[5].ScrollBars:=ssNone;
mezo[5].Tag:=5;
mezo[6].Top:=90;
mezo[6].Left:=190;
mezo[6].FixedCols:=0;
mezo[6].FixedRows:=0;
mezo[6].ColCount:=3;
mezo[6].RowCount:=3;
mezo[6].DefaultColWidth:=20;
mezo[6].DefaultRowHeight:=20;
mezo[6].Ctl3D:=false;
mezo[6].Width:=64;
mezo[6].Height:=64;
mezo[6].ScrollBars:=ssNone;
mezo[6].Tag:=6;
mezo[7].Top:=160;
mezo[7].Left:=50;
mezo[7].FixedCols:=0;
mezo[7].FixedRows:=0;
mezo[7].ColCount:=3;
mezo[7].RowCount:=3;
mezo[7].DefaultColWidth:=20;
mezo[7].DefaultRowHeight:=20;
mezo[7].Ctl3D:=false;
mezo[7].Width:=64;
mezo[7].Height:=64;
mezo[7].ScrollBars:=ssNone;
mezo[7].Tag:=7;
mezo[8].Top:=160;
mezo[8].Left:=120;
mezo[8].FixedCols:=0;
mezo[8].FixedRows:=0;
mezo[8].ColCount:=3;
mezo[8].RowCount:=3;
mezo[8].DefaultColWidth:=20;
mezo[8].DefaultRowHeight:=20;
mezo[8].Ctl3D:=false;
mezo[8].Width:=64;
mezo[8].Height:=64;
mezo[8].ScrollBars:=ssNone;
mezo[8].tag:=8;
mezo[9].Top:=160;
mezo[9].Left:=190;
mezo[9].FixedCols:=0;
mezo[9].FixedRows:=0;
mezo[9].ColCount:=3;
mezo[9].RowCount:=3;
mezo[9].DefaultColWidth:=20;
mezo[9].DefaultRowHeight:=20;
mezo[9].Ctl3D:=false;
mezo[9].Width:=64;
mezo[9].Height:=64;
mezo[9].ScrollBars:=ssNone;
mezo[9].tag:=9;
for i:=0 to 10 do
StringGrid1.Cells[i,0]:=inttostr(i+1);
mezo[1].ONSelectCell:=mezoSelectCell;
mezo[2].ONSelectCell:=mezoSelectCell;
mezo[3].ONSelectCell:=mezoSelectCell;
mezo[4].ONSelectCell:=mezoSelectCell;
mezo[5].ONSelectCell:=mezoSelectCell;
mezo[6].ONSelectCell:=mezoSelectCell;
mezo[7].ONSelectCell:=mezoSelectCell;
mezo[8].ONSelectCell:=mezoSelectCell;
mezo[9].ONSelectCell:=mezoSelectCell;
mezo[1].ONDrawCell:=mezoDrawCell;
mezo[2].ONDrawCell:=mezoDrawCell;
mezo[3].ONDrawCell:=mezoDrawCell;
mezo[4].ONDrawCell:=mezoDrawCell;
mezo[5].ONDrawCell:=mezoDrawCell;
mezo[6].ONDrawCell:=mezoDrawCell;
mezo[7].ONDrawCell:=mezoDrawCell;
mezo[8].ONDrawCell:=mezoDrawCell;
mezo[9].ONDrawCell:=mezoDrawCell;
StringGrid1.OnDrawCell:=mezoDrawCell;
end;
procedure TForm1.mezoSelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
StringGrid1.Visible:=true;
kord.osz:=ACol;
kord.sor:=Arow;
case (Sender as TStringGrid).Tag of
1:begin j:=1;mezo[1].Cells[kord.osz,kord.sor]:=k; end;
2:begin j:=2;mezo[2].Cells[kord.osz,kord.sor]:=k; end;
3:begin j:=3;mezo[3].Cells[kord.osz,kord.sor]:=k; end;
4:begin j:=4;mezo[4].Cells[kord.osz,kord.sor]:=k; end;
5:begin j:=5;mezo[5].Cells[kord.osz,kord.sor]:=k; end;
6:begin j:=6;mezo[6].Cells[kord.osz,kord.sor]:=k; end;
7:begin j:=7;mezo[7].Cells[kord.osz,kord.sor]:=k; end;
8:begin j:=8;mezo[8].Cells[kord.osz,kord.sor]:=k; end;
9:begin j:=9;mezo[9].Cells[kord.osz,kord.sor]:=k; end;
end;
end;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
mezo[j].Cells[kord.osz,kord.sor]:=StringGrid1.Cells[ACol,Arow];
StringGrid1.Visible:=false;
end;
procedure TForm1.mezoDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with (Sender as TStringGrid).Canvas do
begin
Font.Color := clBlack;
{ if the cell is selected, or focused then we use the highlight color for the cell }
if (gdSelected in State) or (gdFocused in State) then
brush.Color := clwhite
{ if the cell is FIXED then we just use the color of the face of a button }
else if (gdFixed in State) then
brush.Color := clwhite
{ else it is just the window color - or any other color you want }
else
Brush.Color := clwhite;
FillRect(Rect);
if (gdSelected in State) or (gdFocused in State) then
Font.Color := clBlack;
{ Draw the text in the cell - you could draw anything in there }
TextRect(Rect, Rect.Left+2, Rect.Top+2, (Sender as TStringGrid).Cells[ACol, ARow]);
end;
end;
end.Ez annyit csinál hogy 9 db 3x3 -as cellát készít és ha az egyik cellába belekattintok akkor felugrik egy másik mező, ahol ki lehet választani a bele kerülő számot. Igazából Sudokut akarok csinálni anyámnak mert most nagyon rákattant.
De azért köszi szépen mindkettőtöknek, hogy segítettetek ilyen amatőrnek mint én.
-
vz12
tag
válasz
Yodafon #1723 üzenetére
Azt hiszem hogy egy kis hibát vétettem, ezt korrigálom:
mezo[1].OnSelectCell:=Sajat_SelectCell; // paraméterek NÉLKÜL
mezo[2].OnSelectCell:=Sajat_SelectCell; // paraméterek NÉLKÜLHelyesen tehát "OnSelectCell" kell ide ahogy Fire példáján is látszik, ezt tévesztettem el. Ha az értékadás jobb oldalaira azonos eljárás nevet írsz be akkor szerintem megvalósul amit szeretnél, tehát közös OnSelectCell eljárása lesz minden példánynak.
Egyébként ez is belerakható ám a ciklusba, így lesz biztosítva a legegyszerűbben a közös OnSelectCell, tehát:
mezo[i].OnSelectCell:=Sajat_SelectCell; // paraméterek NÉLKÜLA többi rész viszont változatlan, tehát a Sajat_SelectCell eljárást szigorúan a definiálandó eljárás paraméterlistájával (OnSelectCell) deklarálni és definiálni (kifejteni) kell.
procedure TForm1.Sajat_SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);Meghíváskor át kell adni a paramétereket is!
Pl. mezo[1].OnSelectCell(Sender,1,1,bValtozo);
Figyelj rá hogy a 4. paraméternek logikai változónak kell lennie a "VAR" miatt!
Ez át fog irányítódni a form Sajat_SelectCell eljárásába és továbbadja a paramétereket is. Viszont a Sajat_SelectCell-t meg kell írni !!! Tehát le kell reagálni a cella kiválasztódás eseményét, ha nem írsz bele semmit akkor ilyenkor nem fog történni semmi. Legalábbis úgy gondolom, mert ezt sem próbáltam ki. -
Yodafon
őstag
Na szóval:
Van 2 db StringGrid-em a formon. Ezeket bepakoltam egy tömbbe.
Eddig remélem tiszta.És pusztán arra lennék kíváncsi hogy hogy is néz ki mondjuk az 1-es indexű StringGrid SelectCell eljárása.
Én valami indexelt eljárásra gondoltam mert ugye egy tömbbe vannak a StringGridek és az eljáráshoz is meg kell adni a tömb indexét azaz hogy hanyadik StringGrid -nek a SelectCell eljárását adom meg.
Egyáltalán lehetséges ez?
-
válasz
Yodafon #1723 üzenetére
Hali!
Oks, akkor figyu. Írd le légyszives, hogy mit szeretnél megvalósítani, de sima hétköznapi nyelven. pl
"Ha rákattintok a stringgrid1-re, akkor formázza le a HDD-t, ha meg a stringgrid2-re, akkor elötte kérdezze is meg, hogy leformázhatja-e...."Szívesen segítek, de most elvesztettem a fonalat pl ezért:
"Pont azt szeretném elkerülni hogy minden mezönek saját SelectCell-je legyen."
A TStringGrid objektunak nincs ilyen tulajdonsága, függvénye, procedúrája, stb
onSelectCell eseménye(event) az van, na ezt meg nem a programozó dönti el, hogy az objektummal létrejöjjön-e vagy sem. Csak azt, hogy felprogramozod vagy sem.Szóval hétköznapi nyelven írd le, hogy mit szeretnél, abból majd rájövök(remélem)
Fire.
-
Yodafon
őstag
Pont azt szeretném elkerülni hogy minden mezönek saját SelectCell-je legyen.
Hanem legyen egy mezo[i] SelectCell eljárás ahol csak a kiválasztott mező táblázat Select Cell-je fusson le. Esetleg én tudnám meghívni egy i változóval.
Amit adtatok az sajnos nem jött be:mezo[1].SelectCell:=mezoSelectCell;
Ezt /|\ a FormCreate be raktam. De valószínűbb hogy csak én vok hüle hozzá.
Bocsi ha hüleségnek tűnik csak most kezdtem el nemrég Delphizni. Előtte Pascaloztam meg C-ztem.
-
válasz
Yodafon #1720 üzenetére
Hali!
vz12 leírta helyesen hogy mire kell odafigyelni.
Valamint szigorúan "eredeti" paraméterlistával:
procedure TForm1.Sajat_SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);Én annyival egészíteném ki, hogy mivel nevet is adtam az objektumoknak(stringgrid1, stringgrid2, stb) ezért van, hogy nem "akármilyen néven" hivatkozok rá(StringGrid1SelectedCell, StringGrid2SelectedCell)
Valamint a progi kilépésekor fel kell szabadítani az objektumokat.
Gyakorlatban ilyen a kód.unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure StringGrid2SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
mezo:array[1..2] of TStringGrid;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i:Integer;
begin
for i:=1 to 2 do begin
mezo[i]:=TStringGrid.Create(Self);
mezo[i].Parent:=Form1;
mezo[i].Name:='StringGrid'+IntToStr(i);
end;
mezo[1].Top:=20;
mezo[1].Left:=50;
mezo[1].FixedCols:=0;
mezo[1].FixedRows:=0;
mezo[1].ColCount:=3;
mezo[1].RowCount:=3;
mezo[1].DefaultColWidth:=20;
mezo[1].DefaultRowHeight:=20;
mezo[1].Ctl3D:=false;
mezo[1].Width:=64;
mezo[1].Height:=64;
mezo[1].ScrollBars:=ssNone;
mezo[1].OnSelectCell:=StringGrid1SelectCell;
mezo[2].Top:=200;
mezo[2].Left:=120;
mezo[2].FixedCols:=0;
mezo[2].FixedRows:=0;
mezo[2].ColCount:=3;
mezo[2].RowCount:=3;
mezo[2].DefaultColWidth:=20;
mezo[2].DefaultRowHeight:=20;
mezo[2].Ctl3D:=false;
mezo[2].Width:=64;
mezo[2].Height:=64;
mezo[2].ScrollBars:=ssNone;
mezo[2].OnSelectCell:=StringGrid2SelectCell;
end;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
ShowMessage('Első grid');
end;
procedure TForm1.StringGrid2SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
ShowMessage('Második grid');
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
i:Integer;
begin
for i:=1 to 2 do begin
mezo[i].Free;
end;
end;
end.Fire.
-
vz12
tag
válasz
Yodafon #1720 üzenetére
Próbáld meg valahogy így:
mezo[1].SelectCell:=Sajat_SelectCell; // paraméterek NÉLKÜL
mezo[2].SelectCell:=Sajat_SelectCell; // paraméterek NÉLKÜL
Valamint szigorúan "eredeti" paraméterlistával:
procedure TForm1.Sajat_SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);Ezt a deklarációs résszel összhangban a kódba is bele kell tenni (természetesen ott kifejtve).
Hozzáteszem hogy nem próbáltam ki, ezen a gépen nincs Delphi sem, de elvileg így kell és ez gyakorlatilag semmiben nem különbözik a "normál" esettől, annak jobb könyvekben benne kell lennie.
Ha már ilyen előrelátó módon tömbbe szervezted az objektumokat akkor azok közös adatait (itt majdnem mind az) én a ciklusban inicializáltam volna a "parent"-hez hasonlóan, tehát pl. mezo[i].Top:=20;
-
Yodafon
őstag
válasz
Fire/SOUL/CD #1719 üzenetére
Nem pont erre gondoltam.
Akkor vázolom a szitut.Deklaráltam ezt a publicban:
mezo:array[1..2] of TStringGrid;
Hozzárendeltem a formhoz őket a FormCreate -ben:
begin
for i:=1 to 2 do
begin
mezo[i]:=TStringGrid.create(form1);
mezo[i].parent:=form1;
end;Majd megadtam az egyes táblázatok tul.-ait szintén ott:
mezo[1].Top:=20;
mezo[1].Left:=50;
mezo[1].FixedCols:=0;
mezo[1].FixedRows:=0;
mezo[1].ColCount:=3;
mezo[1].RowCount:=3;
mezo[1].DefaultColWidth:=20;
mezo[1].DefaultRowHeight:=20;
mezo[1].Ctl3D:=false;
mezo[1].Width:=64;
mezo[1].Height:=64;
mezo[1].ScrollBars:=ssNone;
mezo[2].Top:=20;
mezo[2].Left:=120;
mezo[2].FixedCols:=0;
mezo[2].FixedRows:=0;
mezo[2].ColCount:=3;
mezo[2].RowCount:=3;
mezo[2].DefaultColWidth:=20;
mezo[2].DefaultRowHeight:=20;
mezo[2].Ctl3D:=false;
mezo[2].Width:=64;
mezo[2].Height:=64;
mezo[2].ScrollBars:=ssNone;Majd azt szeretném elérni hogy egy eseményt tudjak hozzárendelni egy táblázathoz:
pl. az 1. táblázat ami a tömb első eleme reagáljon vmit ha kijelölök rajta egy cellát.
ugyanezt a többire is.ha a táblá(i)m nem tömbbel deklarálom akkor simán műxik.
egyáltalán lehetséges ez?
Remélem érthető volt.
-
válasz
Yodafon #1718 üzenetére
Hali!
Mondjuk az a "csak több dimenzióban" nem igazán tudom mire gondolsz...
Esetleg, hogy egy tartományt (range) jelölsz ki, azaz több cellát, és azon akarsz valamilyen műveletet végezni?
Ha esetleg erre akkor így lehet példul:
procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ShowMessage(
'A kiválasztott tartomány kezdőcellája(x,y):'+
IntToStr(StringGrid1.Selection.Left)+','+IntToStr(StringGrid1.Selection.Top)+
Char(13)+'A kiválasztott tartomány utolsó cellája(x,y):'+
IntToStr(StringGrid1.Selection.Right)+','+IntToStr(StringGrid1.Selection.Bottom)
);
end;Fire.
-
Yodafon
őstag
Esetleg azt még meg tudnád mondani hogy hogyan néz ki egy ogyan fgv. ami a kiválasztott cellára lefut?
mint pl. ez:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);csak több dimenzióban?
-
Yodafon
őstag
Köszi szépen.
Be kellet incudolni amit adtál, csak azt nem értem hogy hogyan tud működni ha nincs beincludolva, csak mert az object inspectorban tudom állítgatni .
Mellesleg a kód a TForm1.FormCreate részben van. Úgyhogy csak 1 unitom van. -
válasz
Yodafon #1713 üzenetére
Hali!
Arra tudok gondolni, hogy egy másik unit-ban van a kódod, nem a pl Form1-t tartalmazó unit-ban.
Az a lényeg, hogy ebben a unit-ba használd a StdCtrls unit-ot, mivel ebben vannak deklarálva a Scrollbar konstansok (ssNone, ssBoth, ssVertical, ssHorizontal)
uses StdCtrls
Fire.
-
labuwx
tag
Sziasztok!
Valaki fel tudná tölteni a szűz 2009-es delphi bin/bds.exe-jét?
Előre is köszönöm. -
Yodafon
őstag
Sziasztok
nekem olyan kérdésem lenne hogy csináltam egy tömböt ami 2 elemű és TStringGrid típusú
mikor meg akarom adni a tul. -ait akkor szépen meg is csinálja csak a scrollbars-t nem tudom eltüntetni.mezo[1].Top:=200;
mezo[1].Left:=500;
mezo[1].FixedCols:=0;
mezo[1].FixedRows:=0;
mezo[1].ColCount:=3;
mezo[1].RowCount:=3;
mezo[1].DefaultColWidth:=20;
mezo[1].DefaultRowHeight:=20;
mezo[1].Ctl3D:=false;
mezo[1].Width:=63;
mezo[1].Height:=63;
mezo[1].ScrollBars:=ssNone;az utolsó sorra azt dobja hogy
[Error] Unit1.pas(64): Undeclared identifier: 'ssNone'
most akkor mit is kéne oda rakni?
Köszi szépen.
-
vz12
tag
Az eljárás hívása nem változik.
Az eljárás fejbe a paraméterlistába beletettem egy "VAR" szócskát mert az most szerintem kell.Módosítani kell a deklarációban is + a kódban is.
Én eddig egyszerre 1 komponenst tudtam "lehúzni a formra", de annak nincs semmi akadálya hogy ha már lent van akkor CTRL-C + CTRL-V "módszerrel" szaporítsd őket, így lehet (újrakijelölésekkel) 1-ből 2, 2-ből 4-, 4-ből 8, stb. példány. A végén meg annyi amennyi még hiányzik.
Kicsit biztosan egymásra rakja őket, utána el kell húzni a helyére.
-
Prego
senior tag
Mármint az eljárás fejlécét vagy a meghívását?
Közben felmerült egy kis gondocska, leszedtem az európai országok zászlóit és ezeket szeretném ráhúzni a formomra. Mivel ezek nem fognak változni, ezért nem dinamikus komponensekkel kéne dolgoznom, hanem statikus TImage és CheckBox komponensekkel. Van e arra lehetőség hogy a komponenspalettáról egyszerre több komponenest rakja rá a panelra, vagy kénytelen leszek egyesével ráhuzogatni?
-
Prego
senior tag
Asszem némi felvilágosításra szoroluk paraméterátadás terén
Van egy tömböm, golobális változóként: Kepek: array of TImage;
Amikor új képet húzok be a ScrollBoxba, akkor először lementi a képet a megfelelő mappába, majd, kiüriti a tömböt (letörli az összes addigi képet), és újra kipakolja őket.
Ha a következőképpen hívom meg a törlést:
procedure TForm2.EmptyArray (T: array of TImage);
var i : Integer;
begin
for i := Low(T) to High(T) do
begin
T[i].Free;
T[i] := nil;
end;
End;
...
EmptyArray(Kepek);Akkor ugyan megjeleníti az új képeket, viszont úgy, hogy a már létező képek fölé rakja (itt ott kilóg az előző képek széle).
Ha viszont úgy hívom meg hogy:
procedure TForm2.EmptyArray;
var i : Integer;
begin
for i := Low(Kepek) to High(Kepek) do
begin
Kepek[i].Free;
Kepek[i] := nil;
end;
End;
...
EmptyArray;Akkor minden szépen végbemegy.
A baj az hogy nem csak egy képes tömböm van, és az első megoldás valamivel csinosabb lenne ...
-
-
labuwx
tag
Sziasztok!
Egy nagyon egyszerű Lazarus-os kérdésem lenne. Van egy formon 3 elem: egy gomb, egy egyszerű szövegbeviteli mező és es box ahova kiírja a bevitt szöveget ha megnyomjuk a gombot. A gombnyomás művelete így néz ki:procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.AddStrings(Edit1);
end;Ezzel az a gond, hogy az Edit1 nem TString típusú(az AddStringnek az kell), ez idáig nem olyan nagy dolog, csak nem tudom, hogy mivel kellene bővítenem a kódot, hogy működjön.
(Az infó tanárom a maga delphi 7-es tudásával egyből írt egy ilyen programot lazarusban, de sajnos nem emlékszem a kódra)
A segítséget előre is köszönöm. -
labuwx
tag
válasz
Fire/SOUL/CD #1704 üzenetére
Egyik ismerősöm már ismerte a "hibát": a regionális beállításokat át kell állítani angolra és csak utánna megy rendesen a telepítés. A telepítés után kér egy kódot és egy logint, beírom azt amit e-mailban kaptam(trial), de először azt mondja, hogy hibás, utánna megint ütök egy entert, akkor nem látja hibásnak viszont azt mondja, hogy olyan kódot írjak be ami még nem volt regisztrálva.(ezt már 3db kóddal eljátszotta).
-
Hali!
Nem írtad hogy full-os dvd van, van csak "simán leszedett" változat. A fulldvd-n minden progi rajt van ami kell a telepítéshez. Olvasd el a HELP-et ott le vagyon írva, hogy miknek kell lenni előtelepítve.
Leggyakrabban két dolog "hiánya" miatt nem indul el a telepítő
MDAC 2.8
.Net 2.0Xp estében egyik sincs telepítve, Vista-nal(Ultimate) a NET 2.0 igen
Szóval első körben ezt a kettőt telepítsd felFire.
-
labuwx
tag
Sziasztok!
Az lenne a kérdésem, hogy miért áll meg a delphi 2009 telepítője? Az install Aware kétszer végig megy, az ablak eltűnik és nem csinál semmit. Az a hiba jelentkezik: xp(sp3, sp2), win7(x64), vista(sp1,x64,x86), a többinél meg még nem próbáltam.
A segítséget előre is köszönöm. -
Torry
addikt
Van nekem egy olyan programom, hogy reakcióidő mérés.A problémám az lenne, hogy a zöld idejét kellene randomizálni.
procedure TForm1.FormActivate(Sender: TObject);
beginLabel3.Caption:='0';
Button1.Enabled:=False;//másodpercenkénti visszaszámlálás
Timer1.Interval:=1000;
Timer1.Enabled:=True;//visszaszámlálás indulási érték
Label1.Caption:='3';
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
//ha kezdeti visszaszámlálás folyik
If StrToInt(Label1.Caption) > 0 then Label1.Caption:=IntToStr(StrToInt(Label1.Caption)-1);//label capt vizsgálat
If Label1.Caption='2' then shape1.Brush.Color:=clRed;
If Label1.Caption='1' then shape2.Brush.Color:=clyellow;
If Label1.Caption='0' then
begin
shape1.Brush.Color:=clwhite;
shape2.brush.Color:=clwhite;
shape3.Brush.Color:=clgreen;
//mérés századmásodpercben
Timer1.Interval:=10;
Button1.Enabled:=True;
Label3.Caption:=IntToStr(StrToInt(Label3.Caption)+1);
end;
end;
Tehát ottan, hogy if Label1.Caption='0' előtt kellene random idővel lassítani a visszaszámlálást.
Hogyan lehetne ezt megtenni?Előre is köszi!
-
#95904256
törölt tag
válasz
Fire/SOUL/CD #1700 üzenetére
Köszönöm.
Új hozzászólás Aktív témák
Hirdetés
- LG OLED55G42LW LG Gyári garancia 3 év
- HP EliteBook 840G6 ! AKCIÓ!!! a készlet erejéig!
- Kobo Aura Edition 2 (N236) 6" háttérvilágításos kijelzővel, 4 GB-os tárhellyel - jó állapotban
- HP ProBook 430 G8, 13,3" FHD IPS, I5-1135GU CPU, 16GB DDR4, 256GB SSD, WIN 11, 27% áfás számla, 1 év
- Playstation Portal - 3 hónap Bolti Garanciával
- LG 25GR75FG - E-Sport Monitor - FHD 360Hz 1ms - NVIDIA Reflex + G-sync - AMD FreeSync - HDR 400
- Csere-Beszámítás! Sapphire Pure RX 7700XT 12GB GDDR6 Videokártya! Bemutató Darab!
- AKCIÓ! Gigabyte B760M i5 14600KF 64GB DDR4 512GB SSD RTX 3080 10GB Corsair 4000D Airflow 1000W
- Apple iPhone 13 128GB, Kártyafüggetlen, 1 Év Garanciával
- ÁRGARANCIA! Épített KomPhone i5 12400F 16/32/64GB RAM RTX 5060Ti 8GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest