Hirdetés

2024. május 3., péntek

Gyorskeresés

Hozzászólások

(#1701) #95904256 válasza Fire/SOUL/CD (#1700) üzenetére


#95904256
törölt tag

Köszönöm. :R

(#1702) Torry


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);
begin

Label3.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!

(#1703) labuwx


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.

(#1704) Fire/SOUL/CD válasza labuwx (#1703) üzenetére


Fire/SOUL/CD
félisten

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.0

Xp 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 fel

MDAC: [link]
NET 2.0 : [link]

Fire.

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#1705) labuwx válasza Fire/SOUL/CD (#1704) üzenetére


labuwx
tag

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).

(#1706) labuwx


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.

(#1707) Fire/SOUL/CD válasza labuwx (#1706) üzenetére


Fire/SOUL/CD
félisten

Hali!

procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Add(Edit1.Text)
end;

Fire.

UI: Mondjuk ennek semmi köze a Lazarus-hoz... :DDD

[ Szerkesztve ]

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#1708) Prego


Prego
senior tag

Asszem némi felvilágosításra szoroluk paraméterátadás terén :D

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 ...

Aki másnak vermet ás az a Stack Pointer

(#1710) vz12 válasza Prego (#1708) üzenetére


vz12
tag

Ha még él a probléma akkor próbáld meg így:

procedure TForm2.EmptyArray (var T: array of TImage);

(#1711) Prego válasza vz12 (#1710) üzeneté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?

Aki másnak vermet ás az a Stack Pointer

(#1712) vz12 válasza Prego (#1711) üzenetére


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.

[ Szerkesztve ]

(#1713) Yodafon


Yodafon
senior tag

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? :O

Köszi szépen.

I'm gangsta!

(#1714) Prego válasza vz12 (#1712) üzenetére


Prego
senior tag

Köszi a válaszokat. A var szócskát csak most vettem észre :R

Aki másnak vermet ás az a Stack Pointer

(#1715) labuwx


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.

(#1716) Fire/SOUL/CD válasza Yodafon (#1713) üzenetére


Fire/SOUL/CD
félisten

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.

[ Szerkesztve ]

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#1717) Yodafon


Yodafon
senior tag

Köszi szépen. :R :R :R
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.

[ Szerkesztve ]

I'm gangsta!

(#1718) Yodafon


Yodafon
senior tag

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?

I'm gangsta!

(#1719) Fire/SOUL/CD válasza Yodafon (#1718) üzenetére


Fire/SOUL/CD
félisten

Hali!

Mondjuk az a "csak több dimenzióban" nem igazán tudom mire gondolsz... :F

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.

[ Szerkesztve ]

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#1720) Yodafon válasza Fire/SOUL/CD (#1719) üzenetére


Yodafon
senior tag

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.

[ Szerkesztve ]

I'm gangsta!

(#1721) vz12 válasza Yodafon (#1720) üzenetére


vz12
tag

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;

[ Szerkesztve ]

(#1722) Fire/SOUL/CD válasza Yodafon (#1720) üzenetére


Fire/SOUL/CD
félisten

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.

[ Szerkesztve ]

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#1723) Yodafon


Yodafon
senior tag

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.

I'm gangsta!

(#1724) Fire/SOUL/CD válasza Yodafon (#1723) üzenetére


Fire/SOUL/CD
félisten

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...." :DDD

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) :DDD

Fire.

Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

(#1725) Yodafon


Yodafon
senior tag

Na szóval:

Van 2 db StringGrid-em a formon. Ezeket bepakoltam egy tömbbe.
Eddig remélem tiszta. :D

É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?

I'm gangsta!

(#1726) vz12 válasza Yodafon (#1723) üzenetére


vz12
tag

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ÜL

Helyesen 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ÜL

A 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. :)

[ Szerkesztve ]

(#1727) Yodafon


Yodafon
senior tag

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. :DDD

De azért köszi szépen mindkettőtöknek, hogy segítettetek ilyen amatőrnek mint én.
:R

I'm gangsta!

(#1728) vz12 válasza Yodafon (#1727) üzenetére


vz12
tag

Ö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.

(#1729) labuwx


labuwx
tag

Sziasztok!
Azt szeretném kérdezni, hogy hogyan lehet egy számot egész kitevős hatványára emelni?

(#1730) labuwx


labuwx
tag

duplapost...

[ Szerkesztve ]

(#1731) Gyuri16 válasza labuwx (#1729) üzenetére


Gyuri16
senior tag

Math unit -> Power fuggveny

Nem vagyok egoista, csak uborkagyalu!

(#1732) labuwx


labuwx
tag

Még az érdekelne, hogy több ezer számjegyű egész számok kezelése megoldható-e?

(#1733) Keem1 válasza labuwx (#1732) üzenetére


Keem1
addikt

Valószínű, csak szövegesen tudod. Csak kérdés, milyen módon akarod kezelni :DDD

Legjobb tudomásom szerint a legnagyobb változóba pakolható szám nagyjából ez:

Int64 -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

[ Szerkesztve ]

(#1734) labuwx válasza Keem1 (#1733) üzenetére


labuwx
tag

Az sajnos nekem nagyon nem elég, mert a 2^62 már sok neki. A progi egy mersenne prím kereső lenne. A mersenne prím egy olyan prím ami felírható 2^p-1 alakban.

(#1735) Keem1 válasza labuwx (#1734) üzenetére


Keem1
addikt

Akkor sajnos ebben nem tudok Neked segíteni :(.
De remélem, lesz aki igen...

(#1736) Gyuri16 válasza labuwx (#1732) üzenetére


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

Nem vagyok egoista, csak uborkagyalu!

(#1737) Prego


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? :R

Aki másnak vermet ás az a Stack Pointer

(#1738) labuwx


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.

(#1739) labuwx


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).

(#1740) Gyuri16 válasza labuwx (#1739) üzenetére


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...

[ Szerkesztve ]

Nem vagyok egoista, csak uborkagyalu!

(#1741) labuwx válasza Gyuri16 (#1740) üzenetére


labuwx
tag

Köszi!
Az én Delphi-mben nincs canvas.line csak canvas.lineto ami a bal felső sarokból húz egy vonalat a megadott koordinátákra.

(#1742) Gyuri16 válasza labuwx (#1741) üzenetére


Gyuri16
senior tag

moveto viszont kellene hogy legyen (odateszi a kurzort, de nem huz csikot), ezzel a kettovel mar barmilyen csikot tudsz huzni

Nem vagyok egoista, csak uborkagyalu!

(#1743) vz12 válasza labuwx (#1741) üzenetére


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. ;)

[ Szerkesztve ]

(#1744) labuwx válasza vz12 (#1743) üzenetére


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

(#1745) Gyuri16 válasza labuwx (#1744) üzenetére


Gyuri16
senior tag

szerintem meghuzta a vonalakat, csak nem latszik, mert a kornyezetnek is ugyanolyan szine van. probalj meg mas szint allitani: image.canvas.pen.color (konstansok pl clRed, clBlue ...). allithatsz neki vastagsagot is: pen.width

Nem vagyok egoista, csak uborkagyalu!

(#1746) vz12 válasza labuwx (#1744) üzenetére


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.

(#1747) labuwx válasza vz12 (#1746) üzenetére


labuwx
tag

Ok, én próbálkoztam folyamatosan. Még utoljára azt szeretném kérdezni, hogy mivel lehet kitölteni egy kört, hogy korong legyen belőle?

Sok helyen olvastam, hogy a 2009-es delphi elég bugos és az updatek sok hibát orvosolnak, de nekem update után sajnos nem indul...

(#1748) vz12 válasza labuwx (#1747) üzenetére


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.

(#1749) labuwx válasza vz12 (#1748) üzenetére


labuwx
tag

Sajnos a help se működik: "Cannot find file %s".
Igen, próbáltam újrarakni, de nem javult meg...

(#1750) vz12 válasza labuwx (#1749) üzenetére


vz12
tag

Akkor marad valami jó könyv és/vagy az internet. :K

Copyright © 2000-2024 PROHARDVER Informatikai Kft.