Hirdetés
- Milyen cserélhető objektíves gépet?
- AMD Navi Radeon™ RX 6xxx sorozat
- Kormányok / Autós szimulátorok topicja
- Milyen processzort vegyek?
- Samsung Galaxy Tab tablet topik
- Soundbar, soundplate, hangprojektor
- Minden korábbinál több LED zóna került a TCL új Mini LED tévéjébe
- Jövő hónapban jönnek a Thermaltake ATX 3.1-es SFX tápjai
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Multimédiás / PC-s hangfalszettek (2.0, 2.1, 5.1)
Új hozzászólás Aktív témák
-
sanzi89
addikt
válasz sanzi89 #1900 üzenetére
Akkor leírnám mire jutottam. Van egy Form-om, legyen neve Form2. Az alábbi beállítások érvényesek:
WindowsState = wsMaximized
AutoScroll = FalseVan egy ScrollBoxom, legyen a neve ScrollBox1. Az alábbi beállítások érvényesek:
Align = alClient
AutoScroll = TrueÉs akkor a forráskód:
unit elsokep;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, JPEG;
type
TForm2 = class(TForm)
ScrollBox1: TScrollBox;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses anla;
{$R *.dfm}
procedure TForm2.FormShow(Sender: TObject);
var
JPG1: TJPEGImage;
begin
//Formot a bal felso sarokba allitom
Form2.Top:=0;
Form2.Left:=0;
//Meghatarozzuk a megjelenitendo kep meretet
JPG1:=TJPEGImage.Create;
JPG1.LoadFromFile('c:\01.jpg');
//Letrehozzuk a megjelenitendo kep komponenset a jo beallitasokkal
with TImage.Create(self) do begin
Name:='Kep';
Parent := ScrollBox1;
Autosize:=True;
Top := 0;
Left := 0;
Width := JPG1.Width;
Height := JPG1.Height;
Picture.LoadFromFile('c:\01.jpg');
end;
end;
end.Ez annyit tud, hogy új formon megjeleníti scrollboxban a képet eredeti felbontásban. Erre kellene egy OnClick, hogy milyen változás legyen, ha kattintok. Ezt is megcsináltam, de nem jó:
procedure TForm2.KepClick(Sender: TObject);
begin
ShowMessage('OK');
end;Azt írja, hogy a Kep nem található, pedig ilyen néven hoztam létre... Ötletek?
"Mindent azért kell tudni mert kérdezik, nem azért mert hasznos."
-
sanzi89
addikt
válasz sanzi89 #1901 üzenetére
Plusz a másik gondom, hogy minden egyes Form nyitáskor létrehozza a TImage-et, így ha újra megnyitom a Formot hibát dob, mert már létezik Kep nevű komponens. Az volna az ötletem, hogy a FormClose-ba beleteszem az objektum törlését, de mivel nem tudok rá hivatkozni (Kep.Free; nem jó), nem tudok vele mit csinálni.
"Mindent azért kell tudni mert kérdezik, nem azért mert hasznos."
-
zka67
őstag
válasz sanzi89 #1901 üzenetére
1. a public részben csinálj egy Image : TImage; változót.
2. a form létrehozásakor (FormCreate) hozd létre az Image-t, a Name tulajdonságot ne bántsd.
3. az Image paramétereiben hiányzik az OnClick, ezt add hozzá:
Image.OnClick := KepClick;Ha a form tulajdonságaiban a BorderStyle-t bsNone-ra állítod, kereted sem lesz,.
A JPG1-re nincs szükséged, sem az Image Width és Height beállításokra, mivel a LoadFromFile be fogja állítani ezeket. Ha a Stretch-et true-ra állítod, akkor kinyújtja a teljes képernyőre a képet. -
sanzi89
addikt
válasz sanzi89 #1904 üzenetére
Végül az lett a megoldás, hogy előre létrehozott Image komponens Height és Width értékeit állítottam úgy, ahogy nekem tetszik. Plusz ugye a Form méretét is ehhez mérten állítottam be. Kicsit szöszmötölős, de végül sikerült.
"Mindent azért kell tudni mert kérdezik, nem azért mert hasznos."
-
sanzi89
addikt
Újabb gondom akadt. Volna egy .db kiterjesztésű, elvileg Pradox 5-ös adatbázisom, amihez szeretnék hozzáférni. Az adatbázis nem tartalmaz jelszót, azonban a Delphi mindig feladja a kis ablakját Query indításkor, hogy felhasználónév, jelszó. Ha nem írok be semmit, csak leokézom, akkor a következő hibaüzenetet kapom:
Operation must be performed on the current session
Hogyan tudnám megkerülni, hogy ne kérjen jelszót, ha egyszer nincs. Lokális XP-n ODBC-n fut az adatbázis.
"Mindent azért kell tudni mert kérdezik, nem azért mert hasznos."
-
Tanisz
senior tag
válasz sanzi89 #1906 üzenetére
Paradox régen volt, mintha igaz se lett volna, de hátha nem mondok akkora marhaságot:
de BDE nem lenne jobb erre?
DataModul-t használsz?http://projekt.azigazikincs.hu/ ''Homo loquax nonnumquam sapiens''; "Nam et si ambulavero in valle umbrae mortis, non timebo mala, quoniam tu mecum es. Virga tua et baculus tuus, ipsa me consolata sunt. "
-
Tanisz
senior tag
Vagy épp ADO komponenst, én gyakran azt használtam és nem volt vele gond soha sem.
http://projekt.azigazikincs.hu/ ''Homo loquax nonnumquam sapiens''; "Nam et si ambulavero in valle umbrae mortis, non timebo mala, quoniam tu mecum es. Virga tua et baculus tuus, ipsa me consolata sunt. "
-
Jeti1
tag
Ha egy Delphiben írodott program indításkor, amikor egy adatbázishoz csatlakozna a "Drive not know to system" hibát generálja, mi lehet a gond? Találkozott már valaki ilyen hibajelenséggel?
Ne várjunk a nevetéssel, amíg boldogok leszünk. Különben félő: meghalunk anélkül, hogy nevettünk volna. /La Bruyére/
-
D@ni88
addikt
Sziasztok.
Delphiben hogyan lehet DateTime típusú változóhoz pl 1 percet hozzáadni?
Köszi Dani
-
zka67
őstag
A DateUtils unitban vannak a dátum/idő rutinok. Ebben megtalálod a többek között a következőket is:
function IncYear(const AValue: TDateTime; const ANumberOfYears: Integer = 1): TDateTime;
// function IncMonth is in SysUtils
function IncWeek(const AValue: TDateTime; const ANumberOfWeeks: Integer = 1): TDateTime;
function IncDay(const AValue: TDateTime; const ANumberOfDays: Integer = 1): TDateTime;
function IncHour(const AValue: TDateTime; const ANumberOfHours: Int64 = 1): TDateTime;
function IncMinute(const AValue: TDateTime; const ANumberOfMinutes: Int64 = 1): TDateTime;
function IncSecond(const AValue: TDateTime; const ANumberOfSeconds: Int64 = 1): TDateTime;
function IncMilliSecond(const AValue: TDateTime; const ANumberOfMilliSeconds: Int64 = 1): TDateTime;pl. ha egy perccel többet szeretnél a jelenlegi időnél, akkor
Label1.Caption := DateTimeToStr( IncMinute(Now, 1) );
-
boros.denes
csendes tag
Sziasztok!
Az alábbi programrészletben kéne segítség, amely nem indul el, hibaüzenetet ír:procedure p_BINtoDEC(bin:string;var dec:integer);
var i,x:integer;
begin
dec:=0;
for i:=1 to length(bin) do
begin
x:=length(bin)-i;
»»if bin[i]='1' then dec:=dec+exp(x*ln(2))*bin(i);
end;
end;A jelölt sorra ír egy hibát, az alábbi szöveggel:
Operator not applicable to this operand type.
Valaki tudna valami megoldást? Köszönöm előre is[ Szerkesztve ]
Üdv: boros.denes
-
oleslie
aktív tag
válasz boros.denes #1913 üzenetére
csak tippelek, de itt egy rövid idézet a d7 helpjéből :
Delphi syntax:
procedure Dec(var X[ ; N: Longint]);
Description
In Delphi code, Dec subtracts one or N from a variable.kezdetnek átnevezném a 'dec' nevü változót
aztán ..
bin vs bin(i), char típussal mit akarsz szorozni? chr(49) = '1' , valamit megszorzol 49-el?[ Szerkesztve ]
Egyszerű életet élek. Ami üres megtöltöm, ami tele van kiűritem
-
oleslie
aktív tag
válasz boros.denes #1913 üzenetére
var b:longint
b:=0;
for i:=1 to length(bin) do
if (bin[length(bin)-(i-1)]='1') then
b:=b or (1 shl (i-1));[ Szerkesztve ]
Egyszerű életet élek. Ami üres megtöltöm, ami tele van kiűritem
-
zka67
őstag
válasz boros.denes #1913 üzenetére
function BinToInt(Value: string) : integer;
var i : integer;
begin
Result := 0;
for i := 1 to Length(Value) do
case Value[i] of
'0': Result := Result shl 1;
'1': Result := (Result shl 1) or 1;
else
Break;
end;
end; -
D@ni88
addikt
Sziasztok.
Képet szeretnék menteni oracle-be blob típusba
insertQuery.ParamByName('image_data').LoadFromStream(FImageStream, ftBlob);Ez lefut, de magánál a végrehajtásnál:
ORA-01460 unimplemented or unreasonable conversion requestedBDE 4.0 verzióját használjuk.
Ha az SQLORA32.dll-ről SQLORA8.dll-re váltunk megoldódik a probléma, de jelentősen lassul az alkalmazás.
Köszi
-
oleslie
aktív tag
azért tudom még fokozni
function bin2dec(bin : string) : longint;
asm
push eax
push ebx
xor ebx,ebx
@loop0:
rol ebx,1
cmp byte ptr [eax],$31
jnz @zerobit
or ebx,1
@zerobit:
inc(eax)
cmp byte ptr [eax],0
jnz @loop0
mov result,ebx
pop ebx
pop eax
end;
ez is helyes (bár ez nézőpont kérdése) eredményt ad (0x42)[ Szerkesztve ]
Egyszerű életet élek. Ami üres megtöltöm, ami tele van kiűritem
-
D@ni88
addikt
Kérlek segítsetek, hogy az alábbi kódban hol a hiba:
selQuery:=TADOQuery.Create(nil);
selQuery.ConnectionString:=connection;
try
{---assemble SQL statement}
selQuery.SQL.add('SELECT ID, CUSTOMER_SESSION_ID, IMAGE_NAME, IMAGE_DATA, IMAGE_COMMENT, ENABLED,'
+ ' CREATE_DATE, CREATE_USER_ID, MODIFICATION_DATE, MODIFICATION_USER_ID'
+ ' FROM IMAGES)
+ ' WHERE ID = :id');
selQuery.ParamCheck:=False;
selQuery.Parameters.ParamByName('id').Value:= 1;
selQuery.ExecSQL;Parameters sornál száll el....
Parameter 'id' not found; -
oleslie
aktív tag
létezik az 'id' névvel hivatkozott paraméter?
CV from d7 help / tparameters / methods / addparameter
with ADOStoredProc1.AddParameter do begin
DataType := ftString;
..Direction := pdInput;
Value := 'malathion';
end;Egyszerű életet élek. Ami üres megtöltöm, ami tele van kiűritem
-
oleslie
aktív tag
bevallom, lustaságom 6ártalan. Én rádobtam a formra, és az object inspector-ban beálllítottam ami kellett.
D7 & ADO > VFP7 .dbf fájlokban túrok ígyarufindquery.Parameters.ParamByName('brmin').Value:=brmin;
arufindquery.Parameters.ParamByName('brmax').Value:=brmax;
arufindquery.Prepared:=true;
arufindquery.Open;arufindquery.SQL :
SELECT ar1.azonosito as aruid FROM ar1
JOIN arunet ON arunet.azonosito=ar1.azonosito
WHERE BETWEEN(ar1.eladb, :brmin, :brmax)Egyszerű életet élek. Ami üres megtöltöm, ami tele van kiűritem
-
oleslie
aktív tag
query1:=TADOQuery.Create(nil);
query1.Connection:=ADO_fromprovimax;
query1.Active:=false;
query1.ParamCheck:=false;
query1.SQL.Clear;
query1.SQL.Add('SELECT vevox.azonosito as vid, vevox.nev as vnev, vevojel.datum as vdatum FROM vevojel');
query1.SQL.Add('JOIN vevox ON vevox.azonosito=vevojel.azonosito');
query1.SQL.Add('WHERE vevox.thelyseg=":vhely" AND vevox.adoszam="" AND vevox.fizmod="Készpénz"');
query1.SQL.Add('ORDER BY vdatum desc');
with query1.Parameters.AddParameter do begin
DataType:=ftString;
Name:='vhely';
value:='Budapest';
end;a te módszereddel (1922) hibát ad, így működik. ne kérdezd miért
[ Szerkesztve ]
Egyszerű életet élek. Ami üres megtöltöm, ami tele van kiűritem
-
D@ni88
addikt
Sziasztok.
Ismét lenne egy kérdésem
Van egy jó régi programunk, ami belépés megkezdésekor csatlakozik az adatbázishoz.
A BDE-t használó Tquery objektumok a belépéskor létrejött adatbázis kapcsolatot használják.Most gondolkozunk az ADO-ra való átálláson, de ha TADOQuery-hez tartozó connectionstring megadásával csatlakozok akkor az létrehoz egy teljesen új oracle sessiont.
Meg lehet oldani, hogy a connection string megadása nélkül használjam a TADOQuery objektumot?
Köszi
Dani -
TAZ155
csendes tag
Sziasztok.
Abban szeretném a segitségeteket kérni , hogy hogyan lehet megadni a ScrollBar max értékét .
A max értéket Edit4.text-be lenne megadva.ScrollBar1.Max := 126 ;
De nekem ennek az értékét Edit4.text-ből kéne állitanom.
Mi a helyes megoldás??ScrollBar1.Max := Edit4.text ;
Sok megoldást kipróbálatam, de eggyik sem münködött.
Köszi.
Hali
Hozzáteszem nagyon kezdő vagyok a Delphi programozásban. De valahól el kell kezdeni!!??
-
TAZ155
csendes tag
Üdv.
A végén igy sikerült megoldanom.
-------------------------------------------------------------------------------------------------------------------
procedure TFom_ini.FormCreate(Sender: TObject);
Var
Z1 : Integer;
F: TIniFile;// Adatok beolvasása
begin
F:=TIniFile.Create(ExtractFilePath(Application.Exename) +'gm300.ini' );
With F do
begin
Edit2.Text:= ReadString('P_Config','Walue',Edit2.Text);
Edit4.Clear;
Edit4.Text:= ReadString('P_Config','Max',Edit4.Text);// a scroll max érték megadásaend;
// Scrollbar beállitásai
// vízszintes görgetősáv beállítása, ez alapértelmezésScrollBar1.Kind := sbHorizontal;
// a görgetősávok határainak beállítása
ScrollBar1.Min := 1;Z1:=StrtoInt(Edit4.text);
ScrollBar1.Max := Z1;// a csúszka helyzetének beállítása
ScrollBar1.Position := 1;
// a "soronkénti" lépésnagyság beállítása
ScrollBar1.SmallChange := 1;// az "oldalankénti" lépésnagyság beállítása
ScrollBar1.LargeChange := 10;// a szövegmesők csak olvashatók
Edit1.ReadOnly := true;// az ablak bal felső sarkának koordinátái
Left := 200;
Top := 100;end;
-----------------------------------------------------------------------------------------------------
A hibakezelést még odairom.
A következő kérdésem az lenne hogy hogyan tudok PL: összeszorozni egész számot, nem egész számmal??
133*0.66=??
milyen megoldások vannak, az ilyen probléma megoldására??
Hali
Hozzáteszem nagyon kezdő vagyok a Delphi programozásban. De valahól el kell kezdeni!!??
-
zka67
őstag
[ Szerkesztve ]
-
leximester
tag
Sziasztok, Egy olyan szorgalmit kaptunk suliba, hogy delphiben kéne megírni az androidon ismert szókereső játékot. Ebben kérném segítségeteket, hogy hogyan is történhet ott, maga a 3*3-s játéktér elkészítése? Maga a szótár fájl kész van, illetve a gombokat is elhelyeztem. Én úgy csináltam hogy fixen kiválasztok a szótárból pl egy 3 betűs szót és utána ennek a szónak a betűihez választok további szavak, viszont így egy idő után tudni lehet hogy hol is vannak a szavak. Esetleg valakinek van jobb ötlete? Köszi.
-
TAZ155
csendes tag
oké.
köszi a válaszokat.
mind a két variációt, megnézem.
hali
Hozzáteszem nagyon kezdő vagyok a Delphi programozásban. De valahól el kell kezdeni!!??
-
TAZ155
csendes tag
sziasztok.
Nos mind a két variációt megnéztem.
-------------------------------------------------------------------------------------------------
procedure TFom_ini.Button2Click(Sender: TObject);
var
z1,z2 :Integer;begin
z1:=StrtoInt(Edit1.text);
z2:=StrtoInt(Edit2.text);
Edit3.text:=FloatToStr(z1*z2);end;
end.// igy hibaüzenetet kapok a delphi-től.
-------------------------------------------------------------------------------------------------
Ez igy önmagában münködik.
Edit3.Text := FloatToStr(126*0.039);De hogyan kell átalakitani, hogy Edit.text-esetében jó legyen.
Több megoldást kipróbáltam, de a hibaüzenet maradt.
A végén a z1 és z2 értéket szeretném összeszorozni.
Kipróbáltam ezt a megoldást is.
Edit3.Text := FloatToStr(ScrollBar1.Position*0.039);Majdnem megfelel nekem, és egyszerűbb.
De a 0,039-helyére nekem az Edit2.text-et kéne beirnom, a részadatod amit a végén beszorzom,
onnan venném.Edit3.Text := FloatToStr(ScrollBar1.Position*0.039); ebben az esetben hogyan hivatkozom az Edit2.text-re??
Scrollbar1 értékét (Edit1.text) szorzom Edit2.text értékével.
Az az---------------------------------------------------------------------------------------------
procedure TFom_ini.Button2Click(Sender: TObject);
begin
// Scrollbar értéke szor Edit2 = Edit3.textEdit3.Text := FloatToStr(ScrollBar1.Position*Edit2.text);
end;
-----------------------------------------------------------------------------------------------------
Helyesen hogyan kell hivatkozni Edit2.text-re ebben az esetben??Hali
Hozzáteszem nagyon kezdő vagyok a Delphi programozásban. De valahól el kell kezdeni!!??
-
zka67
őstag
Így:
procedure TFom_ini.Button2Click(Sender: TObject);
var z1,z2 : Real;
begin
DecimalSeparator := '.';
z1 := StrToFloat(Edit1.text);
z2 := StrToFloat(Edit2.text);
Edit3.text := FloatToStr(z1*z2);
end;A DecimalSeparator értéke határozza meg, hogy tizedespontot vagy tizedesvesszőt fogadjon el.
A hibakezelést majd ne felejtsd el hozzáadni (try ... except),procedure TFom_ini.Button2Click(Sender: TObject);
var z1,z2 : Real;
begin
DecimalSeparator := '.';
try
z1 := StrToFloat(Edit1.text);
z2 := StrToFloat(Edit2.text);
except
on E: Exception do { Hibakezelés }
end;
Edit3.text := FloatToStr(z1*z2);
end;vagy használd a Val funkciót.
procedure TFom_ini.Button2Click(Sender: TObject);
var z1,z2 : Real;
e : integer;
begin
DecimalSeparator := '.';
Val(Edit1.Text, z1, e);
if e > 0 then begin
{ Hibakezelés, pl. z1 := 1; vagy Exit; }
end;
Val(Edit1.Text, z2, e);
if e > 0 then begin
{ Hibakezelés, pl. z2 := 1; vagy Exit; }
end;
Edit3.text := FloatToStr(z1*z2);
end;[ Szerkesztve ]
-
TAZ155
csendes tag
Szia.
--------------------------------------------------------------------------------------
var
z2 :Integer;begin
z2:=StrtoInt(Edit2.text);
Edit3.Text := FloatToStr(ScrollBar1.Position*z2);end;
---------------------------------------------------------------------------------
Hozzáteszem nagyon kezdő vagyok a Delphi programozásban. De valahól el kell kezdeni!!??
-
Jeti1
tag
Melyik az a legutolsó Delphi verzió, amelyik még BDE-t használt? Egyáltalán melyik a legfrissebb beszerezhető BDE verzió? Tudom, hogy nagyon régi technológia, de érdekel. Remélem tud valaki segíteni.
Ne várjunk a nevetéssel, amíg boldogok leszünk. Különben félő: meghalunk anélkül, hogy nevettünk volna. /La Bruyére/
-
D@ni88
addikt
Sziasztok
StringGridből szeretném kinyerni az értékét.
i:= dbgDelivery.Cells[SelCol, SelRow];
mindig üres stringet kapok vissza attól függetlenül, hogy van e valami a mezőben..
Tudnátok segíteni?
Köszi
[ Szerkesztve ]
-
oleslie
aktív tag
próbáltam, nekem működik. Ha mutatnál vmi kódrészletet, hogyan próbálod ...
StringGrid1.Cells[1,1]:='c1r1';
StringGrid1.Cells[1,2]:='c1r2';
StringGrid1.Cells[3,3]:='c3r3';
showmessage(stringgrid1.Cells[1,2]);
esetleg próbáld meg, hogy feldobsz a formra egy tmemo -t, és abba beírod a selcol/selrow értékeket, hogy mit próbál kiolvasni a programod, vagy a kiolvasás sorára beállítasz egy töréspontot, és megnézed mi a változók értéke (azt akarja kiolvasni, amit szerinted kell neki? biztos van érték a kiolvasni akart cellában? próbáltad "kézzel" /ctrl+f7/?)[ Szerkesztve ]
Egyszerű életet élek. Ami üres megtöltöm, ami tele van kiűritem
Új hozzászólás Aktív témák
- Ívelt kijelző és 14 nap üzemidő a Honor Band 9-ben
- Autós topik
- Milyen cserélhető objektíves gépet?
- MIUI / HyperOS topik
- Telekom mobilszolgáltatások
- Motorola Edge 30 Ultra - a 200 megapixeles kérdés
- Kínai, és egyéb olcsó órák topikja
- Samsung Galaxy Watch6 Classic - tekerd!
- PlayStation rajongói nyereményjáték
- Politika
- További aktív témák...
- GAMER PC - RTX 2060 6GB - RYZEN 5 4500 - 16GB DDR4 RAM - 240GB SSD - 500GB HDD
- Új iPhone 14 Pro 256GB deep purple gyári független 6 hó gari
- Eladó Gigabyte GA-Z87X-D3H Alaplap!
- Eladó mesés Lian Li Trinity II Performance AIO!
- MSI GeForce RTX 4070 12GB Gaming X Slim - bontatlan - 36 hónap magyar kisker garancia!